“猎鲸船”博客的学习笔记之4
- 格式:doc
- 大小:23.50 KB
- 文档页数:5
PDF Reference 学习札记(一)By Regina 梳理进入readfree有一段时间了,看了coolman、cheming、老马等高手的一些旧贴和他们的宝贝后,大大激发了我的求知欲,我感到要想成为他们这样的高手,必须从基础开始学起,学习PDF Reference就是我迈出的第一步。
今天,我第一次来这里发贴,把我学到的东西和大家一起分享,望高手们批评指正。
我模仿了PDF Reference的example 1,用记事本输入下面的文本,并把该文件保存为Ex001.pdf,它就是一个简单的PDF文件。
%PDF-1.61 0 obj<< /Type /Catalog/Outlines 2 0 R/Pages 3 0 R>>endobj2 0 obj<< /Type /Outlines/Count 0>>endobj3 0 obj<< /Type /Pages/Kids [ 4 0 R ]/Count 1>>endobj4 0 obj<< /Type /Page/Parent 3 0 R/MediaBox [ 0 0 612 792 ]/Contents 5 0 R/Resources << /ProcSet 6 0 R/Font << /F1 7 0 R >>>>>>endobj5 0 obj<< /Length 73 >>streamBT100 100 Td5 Tr1 0 0 rg0 0 1 RG(Hello Word !)'ETendstreamendobj6 0 obj[ /PDF /Text ]endobj7 0 obj<< /Type /Font/Subtype /Type1/Name /F1/BaseFont /Helvetica/Encoding /MacRomanEncoding>>endobj1062xref0 80000000000 65535 f0000000009 00000 n0000000074 00000 n0000000120 00000 n0000000179 00000 n0000000364 00000 n0000000466 00000 n0000000496 00000 ntrailer<< /Size 8/Root 1 0 R>>startxref625%%EOF下面,我对上面的文件结构做一些细致的分析。
Jts个人学习笔记Jts(Java Topology Suite)是关于GIS空间数据Java的API。
目录三角网的创建 (2)1、创建Delaunay三角网: (2)2、创建Conforming Delaunay三角网 (2)3、创建Voronoi图 (3)4、Quad-Edge,四方边缘结构 (3)5、在Tin、DTin、Voronoi中插入一点(IncrementalDelaunayTriangulator) (11)DistanceOp类的相关操作:com.vividsolutions.jts.operation.distance (11)1、nearestPoints(Geometry g0, Geometry g1) (11)2、distance(Geometry g0, Geometry g1) (12)3、nearestLocations() (12)LineSegment类的相关操作:com.vividsolutions.jts.geom (12)1、closestPoint(Coordinate p) (12)2、closestPoints(LineSegment p) (13)3、distance (Coordinate p)和distancePerpendicular(Coordinate p) (13)4、intersection(LineSegment line)和lineIntersection(LineSegment line) (13)5、pointAlong(double slf) (14)6、pointAlongOffset(double slf, double od) (14)7、project(Coordinate p)和project(LineSegment seg) (15)8、projectionFactor(Coordinate p) (15)9、segmentFraction(Coordinate inputPt) (16)CGAlgorithms类的相关操作:com.vividsolutions.jts.algorithm (16)1、orientationIndex(Coordinate p1, Coordinate p2, Coordinate q) (16)Angle类的相关操作:com.vividsolutions.jts.algorithm (16)1、angleBetween(Coordinate tip1, Coordinate tail, Coordinate tip2) (17)2、angleBetweenOriented(Coordinate tip1, Coordinate tail, Coordinate tip2) (17)AffineTransformationFactory类的操作:com.vividsolutions.jts.geom.util (17)1、createFromBaseLines(Coordinate src0, Coordinate src1, Coordinate dest0, Coordinate dest1) (18)AffineTransformation类的操作:com.vividsolutions.jts.geom.util (18)1、构造函数:AffineTransformation(double[] matrix) (18)三角网的创建Jts中创建Tin时,会自己添加新的点,不是太好(ArcGIS在创建Tin时也是会自己新建点的)1、创建Delaunay三角网:DelaunayTriangulationBuilder delaunayBuilder = new DelaunayTriangulationBuilder();delaunayBuilder.setSites(coorList);Geometry geo = delaunayBuilder.getEdges(new GeometryFactory());2、创建Conforming Delaunay三角网ConformingDelaunayTriangulationBuilder conformTriBuilder = new ConformingDelaunayTriangulationBuilder();conformTriBuilder.setSites(geoFactory.createMultiPoint(coorList.toArray(newCoordinate[0])));conformTriBuilder.setConstraints(geoFactory.createMultiLineString(lineStrings)); Geometry geo = delaunayBuilder.getEdges(new GeometryFactory());注:还有一个ConformingDelaunayTriangulator,这个类里面包含了更多的方法。
第一楼在你身上流动的河..∙博客园∙闪存∙首页∙新随笔∙联系∙管理∙订阅随笔- 24 文章- 0 评论- 36[Java]读取文件方法大全1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容public class ReadFromFile {/*** 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*/public static void readFileByBytes(String fileName) {File file = new File(fileName);InputStream in = null;try {System.out.println("以字节为单位读取文件内容,一次读一个字节:");// 一次读一个字节in = new FileInputStream(file);int tempbyte;while ((tempbyte = in.read()) != -1) {System.out.write(tempbyte);}in.close();} catch (IOException e) {e.printStackTrace();return;}try {System.out.println("以字节为单位读取文件内容,一次读多个字节:");// 一次读多个字节byte[] tempbytes = new byte[100];int byteread = 0;in = new FileInputStream(fileName);ReadFromFile.showAvailableBytes(in);// 读入多个字节到字节数组中,byteread为一次读入的字节数while ((byteread = in.read(tempbytes)) != -1) {System.out.write(tempbytes, 0, byteread);}} catch (Exception e1) {e1.printStackTrace();} finally {if (in != null) {try {in.close();} catch (IOException e1) {}}}}/*** 以字符为单位读取文件,常用于读文本,数字等类型的文件*/public static void readFileByChars(String fileName) {File file = new File(fileName);Reader reader = null;try {System.out.println("以字符为单位读取文件内容,一次读一个字节:");// 一次读一个字符reader = new InputStreamReader(new FileInputStream(file));int tempchar;while ((tempchar = reader.read()) != -1) {// 对于windows下,\r\n这两个字符在一起时,表示一个换行。
G4学习G4学习笔记ZhangJie1.数据库1.1.G4数据库表说明1)Code这个是代码对照表,将其他表中字段的可能取值以及取值表⽰的意义填写在这⾥,这样也算是⼀层分层设计吧,数据库开发⼈员可以将数据库中的信息提前设计好,程序开发⼈员则⽆需关⼼数据库的设计,如数据库中表中字段sex的值取0时表⽰什么意思,取1时表⽰什么意思,程序开发⼈员只需在查询数据库时,将sex和0在code表中进⾏⼀次查询就可以了。
这样做还有⼀个好处,就是,在不同的表中都有sex字段,不同的数据库设计⼈员可能设定的取值与取值的意义不同,如果将所有的sex提取到码表中进⾏定义,则使得数据库的设置更加像⼀个整体、有条理。
2)dept这个是部门信息表,其中定义了部门的id、名称、上级部门等信息,上级部门为0的部门表⽰是公司的最上级部门,也就是公司的总部,上下级部门的id⽣成遵循这样的关系,如果上级部门的id为001,则直接下级部门的id为001001~001999,也就是每次在后⾯追加3位数字。
如果部门有下级部门则该部门不是叶节点,如果没有下级部门,则是叶节点。
为什么要定义叶⼦节点leaf这个字段,这主要是考虑到,ext中树控件⾃动装载数据,⽣成所有的部门节点。
⽐如,001下有⼦节点001001,、001002,则展开001时,将请求001的直接下属节点,获得001001、001002节点信息将其作为001的⼦节点。
如果001001、001002不是叶节点,则当展开该节点时,将请求对应的直接下属节点;如果001001、001002是叶⼦节点,则不会展开该节点。
3)event这个是事件表,⽤来记录每⼀个登录⽤户的操作事件,这个表真的是⾮常的重要。
它可以记录每个员⼯在什么时间请求了什么路径,请求的action操作是什么,以及该操作耗费的时间等。
4)exception这个是系统异常监控表,可以记录异常类型、⽅法名、异常信息,它这⾥说监控系统异常,应该指的是G4Studio的异常信息,⽽不是对容器的监控,因为它可以记录⽅法名,应该是我们写的java类中的⽅法名。
hibernate4学习笔记Hibernate4学习笔记本⼈全部以⾃学为主,在⽹上收集各种学习资料,总结归纳学习经验,现将学习路径给予⼤家分享。
此次学习的hibernate的版本是:hibernate-release-4.2.4.Final(截⽌2015年7⽉31⽇最新版),JAVA的版本是:java8.0,使⽤的开发⼯具是:Eclipse Mars Release (4.5.0)。
第⼀天:Hibernate4基础知识和HelloWorld简单编程Hibernate是⼀种半成品ORM框架,对数据库持久化操作,程序员对数据库的操作转换成对对象的操作。
ORM 采⽤元数据来描述对象-关系映射细节, 元数据通常采⽤XML 格式, 并且存放在专门的对象-关系映射⽂件中。
HelloWorld简单编程1、准备Hibernate环境(1)导⼊Hibernate的Jar包,如下:(2)导⼊Mysql驱动包,我⽤的数据库是:Mysql 5.0,数据库驱动包如下:以上所有Jar加完毕之后,需要加⼊到Eclipse⾃⾝系统⾥⾯,具体如下:以上操作完毕之后,Hibernate的环境就算搭建完毕,下⾯就可以进⼀步操作。
2、配置hibernate.cfg.xml⽂件,主要是对数据库的连接,具体如下:"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/doc/63fa364d5022aaea998f0fde.html /hibernate-configuration-3.0.dtd ">rootmysqlname="connection.driver_class">com.mysql.jdbc.Driver jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test)name="dialect">org.hibernate.dialect.MySQLInnoDBDialecttruetrueupdate3、编写⼀个实例类News.java,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;public class News {private Integer id;private String title;private Date date;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public News(String title, String author, Date date) { super();this.title = title;this.author = author;this.date = date;}public News(){}@Overridereturn"News [id="+ id+ ", title="+ title+ ", author="+ author + ", date=" + date + "]";}}4、创建News.hbm.xml配置映射⽂件,具体代码如下:"/doc/63fa364d5022aaea998f0fde.html /hibernate-mapping-3.0.dtd">5、将映射⽂件News.hbm.xml指定到hibernate.cfg.xml配置⽂件⾥⾯,即在hibernate.cfg.xml⽂件⾥加⼊⼀⾏映射代码,具体如下:6、创建hibernate API操作测试类(Juit测试),验证hibernate的优势效果,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {@Testpublic void test() {//1. 创建⼀个 SessionFactory 对象SessionFactory sessionFactory=null;//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和对象关系映射信息Configuration configuration=new Configuration().configure();//4.0 之前这样创建//sessionFactory=configuration.buildSessionFactory();//2). 4.0以后创建⼀个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.ServiceRegistry serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties() ).buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry) ;//2. 创建⼀个 Session 对象Session session=sessionFactory.openSession();//3. 开启事务Transaction transaction=session.beginTransaction();//4. 执⾏保存操作News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));session.save(news);//5. 提交事务/doc/63fa364d5022aaea998f0fde.html mit();//6. 关闭 Sessionsession.close();//7. 关闭 SessionFactory 对象sessionFactory.close();}}7、测试结果如下:(1)数据库⾥⾯的结果如下:(2)Eclipse下的语句⽣成如下:以上就是简单Hibernate的测试,总结:1、不需要在数据库⾥⾯创建任何数据,由hibernate ⾃动⽣成;2、代码简单易理解,不复杂,测试数据只需要先创建以下⼏个步骤:SessionFactory-→Session-→Transaction-→session操作数据库-→提交-→关闭;3、不需要写SQL 语句,从头到尾没有写⼀条SQL语句,反⽽Hibernate帮我们⽣成SQL语句。
odoo开发笔记--⽇常开发注意点总结(持续补充)(1) odoo视图字段,如果是readonly,默认该数据是不会往后台传递的,因此,保存数据的时候,该字段的数据是不会存到数据库中的。
(待确认,字段中增加默认值,保存)(2)视图界⾯,注释的时候,⼀般情况,饿哦们认为注释的代码,启动服务时,就不会被解释;其实不是,当视图中没有涉及变量的action视图ID引⽤指向的时候,这种情况下,确实没有影响;但是,如果被注释的该段代码,包含了引⽤另⼀个窗⼝视图的ID,即使注释掉,当你更新升级模块的时候,还会加载,出现视图外部extend id找不到的异常。
其实原因是,odoo⼀旦模块被安装,相应视图的ID也会存在数据库中,出现外部ID找不到的异常,(3) 改完权限⽂件ir.model.access.csv⽂件,需要重新启动服务,才会⽣效。
(4) odoo 模型函数装饰器,depends 和 onchange区别onchange 前端视图变化触发,后台不触发;depends 前台视图和后端字段值发⽣变化,都会触发。
(5) 当你需要从⼀票单据,复制⽣成多个单据的时候,默认单据名流⽔号也会被复制,为了避免这种情况,确保创建的⼏个单据,流⽔号不同,需要在后台模型中,流⽔号对应的字段,添加:copy=False属性。
(6) 代码中修改模型 py⽂件后,只需要重启odoo服务,重新加载页⾯,就会⽣效;当代码中修改视图view xml⽂件后,需要重启服务,并升级模块才能⽣效;修改static静态⽂件,图⽚,js,css样式⽂件,不需要重启odoo服务,也不需要升级模块,F5强制刷新相应界⾯,就会⽣效。
(7)扩展模型的write更新⽅法,def write(self, vals): self是上⼀次保存前的数据,vals是获取get了,当前修改的字段数据。
Ribbon个人学习文档1.效果一览2.用到的开发包下载地址联系QQ:993159737 3.代码import java.util.Arrays; import java.util.List;import javax.swing.SwingUtilities;import mon.JCommandButton; import org.pushingpixels.flamingo.api.ribbon.JRibbonBand; import org.pushingpixels.flamingo.api.ribbon.JRibbonFrame;import org.pushingpixels.flamingo.api.ribbon.RibbonElementPriority; import org.pushingpixels.flamingo.api.ribbon.RibbonTask;import org.pushingpixels.flamingo.api.ribbon.resize.CoreRibbonResizePolicies; import org.pushingpixels.flamingo.api.ribbon.resize.IconRibbonBandResizePolicy;public class MainFrame extends JRibbonFrame { static { try {javax.swing.UIManager.setLookAndFeel (javax.swing.UIManager.getSystemLookAndFeelClassName ());} catch (Exception e) { e.printStackTrace();}}public static void main(String[] args) { SwingUtilities.invokeLater (new Runnable() { @Overridepublic void run() { MainFrame frame = new MainFrame();frame.setDefaultCloseOperation(EXIT_ON_CLOSE ); frame.pack();frame.setVisible(true );JRibbonBand band1 = new JRibbonBand("Hello", null);band1.setResizePolicies((List) Arrays.asList(newCoreRibbonResizePolicies.None(band1.getControlPanel()),new IconRibbonBandResizePolicy(band1.getControlPanel())));JCommandButton button1 = new JCommandButton("Square", null);JCommandButton button2 = new JCommandButton("Circle", null);JCommandButton button3 = new JCommandButton("Triangle", null);JCommandButton button4 = new JCommandButton("Star", null);band1.addCommandButton(button1, RibbonElementPriority.TOP);band1.addCommandButton(button2, RibbonElementPriority.MEDIUM);band1.addCommandButton(button3, RibbonElementPriority.MEDIUM);band1.addCommandButton(button4, RibbonElementPriority.MEDIUM);RibbonTask task1 = new RibbonTask("One", band1);frame.getRibbon().addTask(task1);}});}}import java.awt.Dimension;import java.util.Arrays;import java.util.List;import javax.swing.SwingUtilities;import mon.JCommandButton;import mon.icon.ImageWrapperResizableIcon; import mon.icon.ResizableIcon;import org.pushingpixels.flamingo.api.ribbon.JRibbonBand;import org.pushingpixels.flamingo.api.ribbon.JRibbonFrame;import org.pushingpixels.flamingo.api.ribbon.RibbonElementPriority;import org.pushingpixels.flamingo.api.ribbon.RibbonTask;import org.pushingpixels.flamingo.api.ribbon.resize.CoreRibbonResizePolicies; import org.pushingpixels.flamingo.api.ribbon.resize.IconRibbonBandResizePolicy;public class MainFrame extends JRibbonFrame {static {try {javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());} catch (Exception e) {e.printStackTrace();}}public static ResizableIcon getResizableIconFromResource(String resource) { returnImageWrapperResizableIcon.getIcon(MainFrame.class.getClassLoader().getResource(resource), new Dimension(48, 48));}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@SuppressWarnings({ "unchecked", "rawtypes" })@Overridepublic void run() {MainFrame frame = new MainFrame();frame.setDefaultCloseOperation(EXIT_ON_CLOSE);frame.pack();frame.setVisible(true);JRibbonBand band1 = new JRibbonBand("Hello", null);band1.setResizePolicies((List) Arrays.asList(newCoreRibbonResizePolicies.None(band1.getControlPanel()),new IconRibbonBandResizePolicy(band1.getControlPanel())));JCommandButton button1 = new JCommandButton("Square", getResizableIconFromResource("resources/Project.png"));JCommandButton button2 = new JCommandButton("Circle", getResizableIconFromResource("resources/Clear.png"));JCommandButton button3 = new JCommandButton("Triangle", getResizableIconFromResource("resources/ZoomOut.png"));JCommandButton button4 = new JCommandButton("Star", getResizableIconFromResource("resources/ZoomIn.png"));band1.addCommandButton(button1, RibbonElementPriority.TOP);band1.addCommandButton(button2, RibbonElementPriority.MEDIUM);band1.addCommandButton(button3, RibbonElementPriority.MEDIUM);band1.addCommandButton(button4, RibbonElementPriority.MEDIUM);RibbonTask task1 = new RibbonTask("One", band1);frame.getRibbon().addTask(task1);}});}}更改外观:1、band1.setResizePolicies((List) Arrays.asList(newCoreRibbonResizePolicies.Mirror(band1.getControlPanel()),new IconRibbonBandResizePolicy(band1.getControlPanel())));2、band1.setResizePolicies((List) Arrays.asList(newCoreRibbonResizePolicies.High2Low(band1.getControlPanel()),new IconRibbonBandResizePolicy(band1.getControlPanel())));3、band1.setResizePolicies((List) Arrays.asList(newCoreRibbonResizePolicies.High2Mid(band1.getControlPanel()),new IconRibbonBandResizePolicy(band1.getControlPanel())));RibbonContextualTaskGroup//设置Groupprivate void setGroup(JRibbon ribbon) {//ContextualTaskGroupRibbonContextualTaskGroup r = new RibbonContextualTaskGroup(" 图层", new Color(255, 50, 45), getLayerEditTask());ribbon.addContextualTaskGroup(r);ribbon.setVisible(r, true);}可以实现一个Task,多个Bandprivate RibbonTask getBeginTask() {RibbonTask task = new RibbonTask("开始", getFileBand(), getOperBand());return task;}下拉菜单功能JCommandButton btnLyrSelect = new JCommandButton("图层选择");btnLyrSelect.setCommandButtonKind(CommandButtonKind.POPUP_ONLY);btnLyrSelect.setPopupCallback(new PopupPanelCallback() {@Overridepublic JPopupPanel getPopupPanel(JCommandButton commandButton) {JCommandPopupMenu menu = new JCommandPopupMenu();menu.addMenuButton(new JCommandMenuButton("你好Menu", (ResizableIcon) IconLoader. getResizableIcon(IconKey.CREATEDTIN)));menu.addMenuButton(new JCommandMenuButton("HelloMenu", null));menu.addMenuSeparator();return menu;}Rich PopupsbtnLyrSelect.setDisplayState(CommandButtonDisplayState.BIG);btnLyrSelect.setCommandButtonKind(CommandButtonKind.POPUP_ONLY);btnLyrSelect.setPopupCallback(new PopupPanelCallback() {@Overridepublic JPopupPanel getPopupPanel(JCommandButton commandButton) {JCommandButtonPanel panel = new JCommandButtonPanel(CommandButtonDisplayState.BIG);panel.addButtonGroup("group1");panel.addButtonGroup("group2");panel.addButtonToGroup("group1", new JCommandButton("1"));panel.addButtonToGroup("group1", new JCommandButton("2"));panel.addButtonToGroup("group1", new JCommandButton("3"));panel.addButtonToGroup("group1", new JCommandButton("4"));panel.addButtonToGroup("group1", new JCommandButton("5"));panel.addButtonToGroup("group2", new JCommandButton("6"));panel.addButtonToGroup("group2", new JCommandButton("7"));panel.addButtonToGroup("group2", new JCommandButton("8"));JCommandPopupMenu menu = new JCommandPopupMenu(panel, 5, 5);menu.setAutoscrolls(true);return menu;}});添加JComponent组件1、添加JCombobox组件的实例:JFlowRibbonBand flowRibbonBand = new JFlowRibbonBand("FlowRibbon", null);JComboBox<String> com = new JComboBox<String>();com.addItem("JComboboxItem1");com.addItem("JComboboxItem2");flowRibbonBand.addFlowComponent(com);2、添加颜色组件:JFlowRibbonBand flowRibbonBand = new JFlowRibbonBand("FlowRibbon", null); flowRibbonBand.setResizePolicies((List) Arrays.asList(new CoreRibbonResizePolicies.FlowTwoRows(flowRibbonBand.getControlPanel()),new IconRibbonBandResizePolicy(flowRibbonBand.getControlPanel()))); JColorChooser colorChooser = new JColorChooser();JComponent[] c = colorChooser.getChooserPanels();flowRibbonBand.addFlowComponent(c[0]);flowRibbonBand.addFlowComponent(c[1]);flowRibbonBand.addFlowComponent(c[2]);JFlowRibbonBand flowRibbonBand = new JFlowRibbonBand("FlowRibbon", null); flowRibbonBand.setResizePolicies((List) Arrays.asList(new CoreRibbonResizePolicies.FlowTwoRows(flowRibbonBand.getControlPanel()), new IconRibbonBandResizePolicy(flowRibbonBand.getControlPanel()))); JComboBox<String> com = new JComboBox<String>();com.addItem("JComboboxItem1");com.addItem("JComboboxItem2");JColorChooser colorChooser = new JColorChooser();JComponent[] c = colorChooser.getChooserPanels();JPanel colorPanel = new JPanel(new BorderLayout());colorPanel.add(c[3]);flowRibbonBand.addFlowComponent(com);flowRibbonBand.addFlowComponent(new JButton("buttondddf"));flowRibbonBand.addFlowComponent(colorPanel);JFlowRibbonBand lineWidth = new JFlowRibbonBand("线条宽度", (ResizableIcon) IconLoader.getResizableIcon(IconKey.ContourSelect));lineWidth.setResizePolicies(((List) Arrays.asList(new CoreRibbonResizePolicies.FlowTwoRows(lineWidth.getControlPanel()), new IconRibbonBandResizePolicy(lineWidth.getControlPanel())))); JPanel panel = new JPanel(new BorderLayout());DrawLineCanvas lineCanvas = new DrawLineCanvas();lineCanvas.setPreferredSize(new Dimension(100, 40));lineCanvas.repaint();panel.add(lineCanvas, BorderLayout.CENTER);JPanel panel2 = new JPanel(new BorderLayout());panel2.add(new JLabel("尺寸:"), BorderLayout.WEST);panel2.add(new JSpinner());panel.add(panel2, BorderLayout.SOUTH);lineWidth.addFlowComponent(panel);return lineWidth;private class DrawLineCanvas extends Canvas {private static final int lineWidth = 100;private static final int lineHeight = 1;@Overridepublic void paint(Graphics g) {g.setColor(Color.blue);g.fillRect(4, 19, lineWidth, lineHeight);}}JRibbonBand中添加GalleryJRibbonBand colorBand = new JRibbonBand("颜色设置", null);colorBand.setResizePolicies(((List) Arrays.asList(new CoreRibbonResizePolicies.None(colorBand.getControlPanel()),new IconRibbonBandResizePolicy(colorBand.getControlPanel()))));JCommandToggleButton button1 = new JCommandToggleButton("blue"); JCommandToggleButton button2 = new JCommandToggleButton("black"); JCommandToggleButton button3 = new JCommandToggleButton("red"); JCommandToggleButton button4 = new JCommandToggleButton("darkGray"); JCommandToggleButton button5 = new JCommandToggleButton("gray"); JCommandToggleButton button6 = new JCommandToggleButton("green"); JCommandToggleButton button7 = new JCommandToggleButton("orange"); JCommandToggleButton button8 = new JCommandToggleButton("cyan");JCommandToggleButton button9 = new JCommandToggleButton("pink");JCommandToggleButton button10 = new JCommandToggleButton("yellow"); JCommandToggleButton button11 = new JCommandToggleButton("lightGray"); JCommandToggleButton button12 = new JCommandToggleButton("white");button1.setIcon((ResizableIcon) IconLoader.paintIcon(Color.blue, 55, 50));button2.setIcon((ResizableIcon) IconLoader.paintIcon(Color.black, 55, 50));button3.setIcon((ResizableIcon) IconLoader.paintIcon(Color.red, 55, 50));button4.setIcon((ResizableIcon) IconLoader.paintIcon(Color.darkGray, 55, 50));button5.setIcon((ResizableIcon) IconLoader.paintIcon(Color.gray, 55, 50));button6.setIcon((ResizableIcon) IconLoader.paintIcon(Color.green, 55, 50));button7.setIcon((ResizableIcon) IconLoader.paintIcon(Color.orange, 55, 50));button8.setIcon((ResizableIcon) IconLoader.paintIcon(Color.cyan, 55, 50));button9.setIcon((ResizableIcon) IconLoader.paintIcon(Color.pink, 55, 50));button10.setIcon((ResizableIcon) IconLoader.paintIcon(Color.yellow, 55, 50));button11.setIcon((ResizableIcon) IconLoader.paintIcon(Color.lightGray, 55, 50));button12.setIcon((ResizableIcon) IconLoader.paintIcon(Color.white, 55, 50));List<JCommandToggleButton> buttons = new ArrayList<JCommandToggleButton>();buttons.add(button1);buttons.add(button2);buttons.add(button3);buttons.add(button4);buttons.add(button5);buttons.add(button6);buttons.add(button7);buttons.add(button8);buttons.add(button9);buttons.add(button10);buttons.add(button11);buttons.add(button12);StringValuePair<List<JCommandToggleButton>> svp = newStringValuePair<List<JCommandToggleButton>>("常规色彩", buttons);List<StringValuePair<List<JCommandToggleButton>>> svps = newArrayList<StringValuePair<List<JCommandToggleButton>>>();svps.add(svp);Map<RibbonElementPriority, Integer> prefers = new HashMap<RibbonElementPriority, Integer>(); prefers.put(RibbonElementPriority.LOW, 2);prefers.put(RibbonElementPriority.MEDIUM, 5);prefers.put(RibbonElementPriority.TOP, 5); //一行的最大数数目colorBand.addRibbonGallery("颜色设置", svps, prefers, 5, 3, RibbonElementPriority.TOP); colorBand.setRibbonGalleryPopupCallback("颜色设置", new RibbonGalleryPopupCallback() { @Overridepublic void popupToBeShown(JCommandPopupMenu menu) {menu.addMenuButton(new JCommandMenuButton("更多...",(ResizableIcon)IconLoader.paintIcon(55, 50)));}});return colorBand;JFlowRibbonBand layerStyleRibbonBand = new JFlowRibbonBand("注释标注", null); layerStyleRibbonBand.setResizePolicies((List) Arrays.asList(new CoreRibbonResizePolicies.FlowTwoRows(layerStyleRibbonBand.getControlPanel()), new IconRibbonBandResizePolicy(layerStyleRibbonBand.getControlPanel())));JCheckBox chckbxNewCheckBox = new JCheckBox("在图层中显示要素注释");JComboBox<String> com = new JComboBox<String>();com.addItem("ID");com.addItem("Contour");com.addItem("Area");layerStyleRibbonBand.addFlowComponent(chckbxNewCheckBox);JPanel panel2 = new JPanel();panel2.add(new JLabel("展现字段:"));panel2.add(com);layerStyleRibbonBand.addFlowComponent(panel2);JComboBox<String> charType = new JComboBox<String>();charType.addItem("黑体");charType.addItem("楷体");charType.addItem("宋体");charType.addItem("新时代罗马");layerStyleRibbonBand.addFlowComponent(charType);JComboBox<Integer> charSize = new JComboBox<Integer>();charSize.addItem(5);charSize.addItem(10);charSize.addItem(15);charSize.addItem(20);layerStyleRibbonBand.addFlowComponent(charSize);JCommandButtonStrip strip = new JCommandButtonStrip(); JCommandToggleButton b1 = new JCommandToggleButton("12"); JCommandToggleButton b2 = new JCommandToggleButton("23"); JCommandToggleButton b3 = new JCommandToggleButton("34"); JCommandToggleButton b4 = new JCommandToggleButton("45"); attachImage(b1, IconKey.CreateConvexHull);attachImage(b2, IconKey.CreateConvexHull);attachImage(b3, IconKey.CreateConvexHull);attachImage(b4, IconKey.RUN_AGENT);strip.add(b1);strip.add(b2);strip.add(b3);strip.add(b4);layerStyleRibbonBand.addFlowComponent(strip);return layerStyleRibbonBand;4.改变界面的风格5.Flamingo-Ribbon的全面文档/p-270945187.htmltestRibbon.jnlp新建.jnlp文件,将如下代码拷贝进去。
《APUE》读书笔记—第九章进程关系 本章看后给⼈似懂⾮懂的感觉,主要是不知道实际当中如何去使⽤。
通过前⾯⼏章的学习,每个进程都有⼀个⽗进程,当⼦进程终⽌时,⽗进程得到通知并取得⼦进程的退出状态。
先将本章基本的知识点总结如下,⽇后再看时候好好总结⼀下。
1、终端登录 介绍了有终端登录Unix系统的过程。
通过init进程读⽂件/etc/ttys,fork⼀个⼦进程调⽤exec执⾏getty程序进⾏登录,当⽤户输⼊完⽤户名后,getty的⼯作完成了,然后调⽤login程序,类似execle("/bin/login","login","-p",username,(char *)0,envp)。
2、⽹络登录 经由内核的⽹络接⼝驱动程序,使⽤伪终端驱动程序,BSD中由inetd进程等待⽹络连接。
具体过程为:inti进程调⽤⼀个shell,启动守护进程inetd,等待TCP/IP连接请求达到主机,当⼀个连接请求到达时,fork⼀个⼦进程进⾏执⾏相关程序。
3、进程组 每个进程除了拥有⼀个进程ID外,还属于⼀个进程组,进程组是⼀个或多个进程的集合,每个进程组有⼀个唯⼀的进程组ID,可以通过getpgrp函数获取。
每个进程组可以有⼀个组长进程,其进程组ID等于其进程ID。
组长进程可以创建⼀个进程组,创建改组中的进程。
通过setpgid函数添加⼀个现有的组或者创建⼀个新进程组。
4、会话 会话(session)是⼀个或者多个进程组的集合,通常是由shell的管道线将⼏个进程编程⼀组。
进程调⽤setsid函数创建⼀个新会话,getsid函数返回调⽤进程的会话⾸进程的进程组ID。
5、控制终端 ⼀个会话可以⽤⼀个控制终端;建⽴与控制终端连接的会话⾸进程称为控制进程;⼀个会话中的⼏个进程组可以分为前台进程组和后台进程组;⼀个会话中只有⼀个前台进程组,但可以有多个后台进程组;中断(Ctrl+C,SIGINT)、退出(Ctrl+/,SIGQUIT)和挂起(Ctrl+Z,SIGTSTP)字符产⽣的信号发送到前台进程组。
《kubernetes权威指南第五版》读书笔记修改kubeadm的默认配置 kubeadm的初始化控制平⾯(init)命令和加⼊节点(join)命令均可以通过指定的配置⽂件修改默认参数的值。
kubeadm将配置⽂件以ConfigMap形式保存到集群中,便于后续的查询和升级⼯作。
kubeadm config⼦命令提供了对这组功能的⽀持。
kubeadm config print init-defaults:输出kubeadm init命令默认参数的内容。
kubeadm config print join-defaults:输出kubeadm join命令默认参数的内容。
kubeadm config migrate:在新旧版本之间进⾏配置转换。
kubeadm config images list:列出所需的镜像列表。
kubeadm config images pull:拉取镜像到本地。
kubeadm config print init-defaults >init-default.yaml 对⽣成的⽂件进⾏编辑,可以按需⽣成合适的配置。
例如,若需要⾃定义镜像的仓库地址、需要安装的Kubernetes版本号及Pod的IP地址范围kubeadm config images list:列出所需的镜像列表 如果⽆法访问k8s.gcr.io,则可以使⽤国内镜像托管站点进⾏下载,例如https://,这可以通过修改Docker服务的配置⽂件(默认为/etc/docker/daemon.json)进⾏设置,例如: 然后,使⽤kubeadm config images pull命令或者docker pull命令下载上述镜像,kubeadm config images pull --config=init-config.yaml 在镜像下载完成之后,就可以进⾏安装了。
在开始之前需要注意:kubeadm的安装过程不涉及⽹络插件(CNI)的初始化,因此kubeadm初步安装完成的集群不具备⽹络功能,任何Pod(包括⾃带的CoreDNS)都⽆法正常⼯作。
“猎鲸船”博客的学习笔记之4
7.10缠论弟子的6步买入法。
(2011-07-10
17:35:07)
我们交易的本质是什么?就是价格的波动,不管他是股票,期货,或者是汇率等等,我们唯一担心的是波动的幅度太小,时间太短,从而不容易产生利润,因此,从纯技术角度讲,对于本座来说,任何股票都是废纸,只不过那些所谓有长期投资价值的股票的长期趋势是向上的,长期处于中枢的上移之中,在不能做空的股票市场里,只是择优选择而已。
因此,关键是波动的幅度,只要有波动,必然有利润,最怕的就是一条直线。
那么缠论弟子如何买入一只股票,如何赚取波动带来的利润?
1 确定你的操作级别。
建议散户用5F。
2 确定大方向。
就是看30F级别。
这个级别上必须是趋势底背驰或者上升趋势。
这叫看长做短。
3 明白当下的走势处在什么状态。
就是在最近的30F级别中枢的之中,之上还是之下。
等待机会出现。
4
结合题材,热点,板块,实施买入操作。
由于操作级别是5F,
相对于30F级别是次级别,因此,每个买入点都是30F的次级别回调末端,每个买入点都在下跌中。
出于安全考虑,可以放弃第一买点,专攻第二第三买点。
而要判断5F级别的下跌结束,还要下移一个级别,就是要看1F级别。
这样,你的操作级别就是三级别联立:30F确定大方向,保证大方向不错,是主趋势;5F是操作级别,是和主趋势30F同向的次级别趋势,切入点是和主趋势反向的次级别折返趋势末端。
1F是操作级别的次级别,作用是准确定位5F的走势准确的结束位置。
1F,5F,30F,三级别联立,构成了一个立体全方位的操作系统。
5
止损。
任何买入计划必须设立止损。
市场的本质就是不确定性。
没有任何交易系统能够100%保证成功。
由于操作级别是5F,和日线一笔对应,因此可以把5日线作为止损线,有效跌破就走,所谓有效,就是三天3%原则,有时主力故意骗线,所以本座一般用7日线。
当然也可以用10日线。
不过,这是5F级别操作者最大的止损位了。
如果用10日线止损,那么破了就必须走,哪怕是盘中。
6
出局。
买入后是持币等待。
根据本座操作经验,如果你在第二买点买入,特别是在第二买点B买入,那么后面一般就进入30F中枢的上移阶段,一般买入后三天之内必然大涨10%
以上,如果三天之内不大涨,势必重新折返中枢继续震荡,因此,三天之内不大涨就一定要出局,因为后面很可能就是向下的一个5F走势或者日线一笔。
我们规定只参与向上的5F走势,不参与5F向下的走势,这是我们的原则和操作级别。
不破你的持股线5日线或者10日线坚决持股。
当向上的5F级别(日线一笔)进入最后一个30分钟向上笔时,进入背驰段后,可以下移到1F级别进行顶背驰定位,这样就可以卖在最高点了。
卖出后,持币等待下一个5F向下走势的结束和一个新的向上5F走势的开始。
再次明确,本座只是陪练,只有自己钢铁了,才是正途,另外,本座说的个股,要根据理论保证的买卖点来,否则,赔了活该,到本座这里找拐杖的,没有,这里只有欧几里得几何般严密的缠中说禅理论和加强版的猎鲸理论。
如此而已。
1 确定你的操作级别建议散户用5F
2 确定大方向
就是看30F级别这个级别上必须是趋势底背驰或者上升趋势。
这叫看长做短 3 明白当下的走势处在什么状态。
就是在最近的30F级别中枢的之中之上还是之下等待机会出现4 结合题材,热点,板块,实施买入操作。
由于操作级别是5F,相对于30F级别是次级别每个买入点都是30F的次级别回调末端你的操作级别就是三级别联立30F确定大方向保证大方向不错,是主趋势;每个买入点都在下跌中。
出于安全考虑,可以放弃第一买点专攻第二第三买点。
5F是操作级别,
是和主趋势30F同向的次级别趋势切入点是和主趋势反向的次级别折返趋势末端而要判断5F级别的下跌结束,还要下移一个级别就是要看1F级别。
1F是操作级别的次级别,作用是准确定位5F的走势准确的结束位置。
1F,5F,30F,三级别联立,构成了一个立体全方位的操作系统。
5 止损任何买入计划必须设立止损市场的本质就是不确定性没有任何交易系统能够100%保证成功。
由于操作级别是5F,和日线一笔对应因此可以把5日线作为止损线有效跌破就走,所谓有效,就是三天3%原则,有时主力故意骗线,所以本座一般用7日线当然也可以用10日线不过,这是5F级别操作者最大的止损位了如果用10日线止损,那么破了就必须走,哪怕是盘中 6 出局买入后是持币等待我们规定只参与向上的5F走势,不参与5F向下的走势是我们的原则和操作级别。
这不破你的持股线5日线或者10日线坚决持股。
根据本座操作经验,如果你在第二买点买入,特别是在第二买点B买入那么后面一般就进入30F中枢的上移阶段,一般买入后三天之内必然大涨10%以上如果三天之内不大涨,势必重新折返中枢继续震荡,三天之内不大涨就一定要出局,因为后面很可能就是向下的一个5F走势或者日线一笔。
当向上的5F级别(日线一笔)进入最后一个30分钟向上笔时进入背驰段后,可以下移到1F级别进行顶背驰定位这样就可以卖在最高点了。
卖出后,持币等待下一个5F向下走势
的结束和一个新的向上5F走势的开始。