精华内容
下载资源
问答
  •  2020有关环境保护心得作文800范文1 我家住在太西镇,我家门前有一条长长的大水沟,要是以前,我一定跷起大拇指夸它,可是现在,我对它却之有愧。 我从小就在这条水沟边玩耍,记得我五六岁时爸爸经常我到...
  • 小学植树节作文450五篇 树,是地球给我们宝贵资源,如果没有...我们选择了一块泥土比较湿润地方,因为这里土很软,好挖,小树苗也好。我用铲子刨坑,小红来栽树,小丽去水。一个个坑刨好了,小红拿着...
  • 教师实习周记600.doc

    2021-01-14 23:27:53
    我们三个实习老师一起承担着生活各个方面——买菜,做饭,水,洗衣服等等都要自己安排。我们一起商量并不断探索,生活由乱到稳。愉快合作给我们生活带来了很多便利,为我们更好工作提供了保障。 工作上,...
  • 以春天脚步为话题作文300五篇 春,好似一个害羞姑娘,迈着轻轻步伐,着绿色长裙,挥着长长的袖子,着柔和春风,赶走寒冷冬天,来到美好人间。春天脚步是轻轻,静悄悄。暖暖春风迎面吹来,...
  • java 字体对话框

    2009-10-05 22:05:55
    本人不才!花了很时间写了这个代码...如果有什么好建议,可以。本人再补。预览效果如下图:     package styleDispose; import java.awt.GraphicsEnvironment; import javax.swing.JDialog; imp...

    本人不才!花了很长时间写了这个代码。不是很好,比起Windows自带的字体对话框差一点。
    不过已经够用了。等将来有时间了,在进行完善。
    如果有什么好的建议,可以提。本人再补。
    预览效果如下图:

     

    字体对话框

     

    package styleDispose;
    
    import java.awt.GraphicsEnvironment;
    
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.ListModel;
    
    import java.awt.Font;
    import javax.swing.JPanel;
    import java.awt.Rectangle;
    import javax.swing.JScrollPane;
    import javax.swing.BorderFactory;
    import javax.swing.border.TitledBorder;
    import java.awt.Color;
    import javax.swing.JList;
    import javax.swing.JLabel;
    
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JTextField;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.SoftBevelBorder;
    import javax.swing.JButton;
    import javax.swing.SwingConstants;
    
    public class FontChooserDialog extends JDialog {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	/**
    	 * 界面设计需要
    	 * */
    	private JPanel jPanel = null;
    	private JScrollPane jScrollPane = null;
    	private JPanel jPanel1 = null;
    	private JLabel jLabel = null;
    	private JLabel jLabel1 = null;
    	private JLabel jLabel2 = null;
    	private JTextField fontNameText = null;
    	private JTextField fontItalicText = null;
    	private JTextField fontSizeText = null;
    	private JList fontNameList = null;
    	private JList fontItalicList = null;
    	private JList fontSizeList = null;
    	private JPanel jPanel2 = null;
    	private JButton okButton = null;
    	private JButton regitButton = null;
    	private JButton cancleButton = null;
    	private JScrollPane jScrollPane1 = null;
    	private JScrollPane jScrollPane2 = null;
    	private JScrollPane jScrollPane3 = null;
    	private static JLabel fontStyle = null;
    	/**
    	 * 字体默认变量
    	 * */
    	private Font defaultFont = new Font("\u5b8b\u4f53", Font.PLAIN, 12);
    	/**
    	 * 返回字体变量
    	 * */
    	private static Font returnFont = null;
    	/**
    	 * Boolean 变量,判断是否正常返回,是否用户选择了字体
    	 * */
    	private static boolean judge = false;
    	/**
    	 * 以防止事件重复调用或不必要的更改,定义两个boolean变量分别
    	 * 为:fontNameList和fontSizeList判断
    	 * 等于true则循环调用,false则不
    	 * */
    	private boolean nameJuge = true;
    	private boolean sizeJuge = true;
    	
    	
    	public FontChooserDialog(){
    		this(null);
    	}
    	public FontChooserDialog(JFrame jframe){
    		this(jframe,true);
    	}
    	public FontChooserDialog(JFrame jframe,boolean boo){
    		this(jframe,boo,null);
    	}
    	public FontChooserDialog(JFrame jframe,boolean boo,Font font){
    		super(jframe,boo);
    		initialize();
    		initializeFont(font);
    		this.setLocationRelativeTo(jframe);
    	}
    	
    	/**
    	 * This method initializes this
    	 * 
    	 */
    	private void initialize() {
            this.setContentPane(getJPanel());
            this.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
            this.setBounds(new Rectangle(0, 0, 430, 335));
            this.setTitle("字体选择对话框");
            this.addWindowListener(new WindowAdapter(){
            	public void windowClosing(WindowEvent e) {
            		judge = false;
            		closeWindow();
            	}
            });
    			
    	}
    	public static Font showDialog(JFrame jframe,boolean boo){
    		return showDialog(jframe,boo,null);
    	}
    	public static Font showDialog(JFrame jframe,boolean boo,Font font){
    		JDialog jd = new FontChooserDialog(jframe,boo,font);
    		jd.setVisible(true);
    		if(judge){returnFont = fontStyle.getFont();}
    		jd.dispose();
    		return returnFont;
    	}
    	/**
    	 * This method initializes jPanel	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getJPanel() {
    		if (jPanel == null) {
    			jPanel = new JPanel();
    			jPanel.setLayout(null);
    			jPanel.setFont(new Font("Dialog", Font.PLAIN, 12));
    			jPanel.add(getJPanel1(), null);
    			jPanel.add(getJPanel2(), null);
    			jPanel.add(getOkButton(), null);
    			jPanel.add(getRegitButton(), null);
    			jPanel.add(getCancleButton(), null);
    		}
    		return jPanel;
    	}
    	/**
    	 * This method initializes jScrollPane	
    	 * 	
    	 * @return javax.swing.JScrollPane	
    	 */
    	private JScrollPane getJScrollPane() {
    		if (jScrollPane == null) {
    			fontStyle = new JLabel();
    			fontStyle.setText("你好!天生我才必有用!Hello World!");
    			fontStyle.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontStyle.setHorizontalAlignment(SwingConstants.CENTER);
    			fontStyle.setHorizontalTextPosition(SwingConstants.CENTER);
    			jScrollPane = new JScrollPane();
    			jScrollPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
    			jScrollPane.setViewportView(fontStyle);
    			jScrollPane.setBounds(new Rectangle(5, 20, 400, 60));
    		}
    		return jScrollPane;
    	}
    	/**
    	 * This method initializes jPanel1	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getJPanel1() {
    		if (jPanel1 == null) {
    			jLabel2 = new JLabel();
    			jLabel2.setBounds(new Rectangle(285, 5, 120, 15));
    			jLabel2.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			jLabel2.setText("大小:");
    			jLabel1 = new JLabel();
    			jLabel1.setBounds(new Rectangle(160, 5, 120, 15));
    			jLabel1.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			jLabel1.setText("字型:");
    			jLabel = new JLabel();
    			jLabel.setBounds(new Rectangle(5, 5, 150, 15));
    			jLabel.setDisplayedMnemonic(KeyEvent.VK_UNDEFINED);
    			jLabel.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			jLabel.setText("字体:");
    			jPanel1 = new JPanel();
    			jPanel1.setLayout(null);
    			jPanel1.setBounds(new Rectangle(5, 5, 410, 175));
    			jPanel1.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
    			jPanel1.add(jLabel, null);
    			jPanel1.add(jLabel1, null);
    			jPanel1.add(jLabel2, null);
    			jPanel1.add(getFontNameText(), null);
    			jPanel1.add(getFontItalicText(), null);
    			jPanel1.add(getFontSizeText(), null);
    			jPanel1.add(getJScrollPane1(), null);
    			jPanel1.add(getJScrollPane2(), null);
    			jPanel1.add(getJScrollPane3(), null);
    		}
    		return jPanel1;
    	}
    	/**
    	 * This method initializes fontNameText	
    	 * 	
    	 * @return javax.swing.JTextField	
    	 */
    	private JTextField getFontNameText() {
    		if (fontNameText == null) {
    			fontNameText = new JTextField();
    			fontNameText.setBounds(new Rectangle(5, 25, 150, 20));
    			fontNameText.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontNameText.addKeyListener(new KeyAdapter(){
    				public void keyTyped(KeyEvent e) {
    					String oldText = fontNameText.getText();
    					String newText = "";
    					if("".equals(fontNameText.getSelectedText()) && null == fontNameText.getSelectedText()){
    						newText = fontNameText.getText()+e.getKeyChar();
    					}else{
    						newText = oldText.substring(0,fontNameText.getSelectionStart())+e.getKeyChar()+oldText.substring(fontNameText.getSelectionEnd());
    					}
    					System.out.println("fontName:"+newText);
    					nameJuge = false;
    					fontNameList.setSelectedValue(getLateIndex(fontNameList,newText),true);
    					nameJuge = true;
    				}
    			});
    		}
    		return fontNameText;
    	}
    	/**
    	 * This method initializes fontItalicText	
    	 * 	
    	 * @return javax.swing.JTextField	
    	 */
    	private JTextField getFontItalicText() {
    		if (fontItalicText == null) {
    			fontItalicText = new JTextField();
    			fontItalicText.setBounds(new Rectangle(160, 25, 120, 20));
    			fontItalicText.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontItalicText.setEnabled(false);
    		}
    		return fontItalicText;
    	}
    	/**
    	 * This method initializes fontSizeText	
    	 * 	
    	 * @return javax.swing.JTextField	
    	 */
    	private JTextField getFontSizeText() {
    		if (fontSizeText == null) {
    			fontSizeText = new JTextField();
    			fontSizeText.setBounds(new Rectangle(285, 25, 120, 20));
    			fontSizeText.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontSizeText.setColumns(4);
    			fontSizeText.addKeyListener(new KeyAdapter(){
    				public void keyTyped(KeyEvent e) {
    					//System.out.println("Key Code:"+(Character.getNumericValue(e.getKeyChar())==-1));
    					String oldText = fontSizeText.getText();
    					String newText = "";
    					if("".equals(fontSizeText.getSelectedText()) && null == fontSizeText.getSelectedText()){
    						newText = fontSizeText.getText()+e.getKeyChar();
    					}else{
    						newText = oldText.substring(0,fontSizeText.getSelectionStart())+e.getKeyChar()+oldText.substring(fontSizeText.getSelectionEnd());
    					}
    					//System.out.println("fontSize:"+newText);
    					sizeJuge = false;
    					fontSizeList.setSelectedValue(getLateIndex(fontSizeList,newText),true);
    					if(newText.matches("(\\d)+")){
    						fontStyle.setFont(new Font(fontStyle.getFont().getFontName(),fontStyle.getFont().getStyle(),Integer.parseInt(newText)));
    					}
    					sizeJuge = true;
    				}
    			});
    			
    		}
    		return fontSizeText;
    	}
    	/**
    	 * This method initializes fontNameList	
    	 * 	
    	 * @return javax.swing.JList	
    	 */
    	private JList getFontNameList() {
    		if (fontNameList == null) {
    			fontNameList = new JList(GraphicsEnvironment.getLocalGraphicsEnvironment()
    					.getAvailableFontFamilyNames());
    			fontNameList.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontNameList
    					.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
    						public void valueChanged(javax.swing.event.ListSelectionEvent e) {
    							if(nameJuge){fontNameText.setText(fontNameList.getSelectedValue().toString());}
    							fontStyle.setFont(new Font(fontNameList.getSelectedValue().toString(),fontStyle.getFont().getStyle(),fontStyle.getFont().getSize()));
    						}
    					});
    		}
    		return fontNameList;
    	}
    	/**
    	 * This method initializes fontItalicList	
    	 * 	
    	 * @return javax.swing.JList	
    	 */
    	private JList getFontItalicList() {
    		if (fontItalicList == null) {
    			fontItalicList = new JList(new String[]{"Plain", "Bold", "Italic","Bold Italic"});
    			fontItalicList.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontItalicList
    					.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
    						public void valueChanged(javax.swing.event.ListSelectionEvent e) {
    							fontItalicText.setText(fontItalicList.getSelectedValue().toString());
    							fontStyle.setFont(new Font(fontStyle.getFont().getFontName(),fontItalicList.getSelectedIndex(),fontStyle.getFont().getSize()));
    						}
    					});
    		}
    		return fontItalicList;
    	}
    	/**
    	 * This method initializes fontSizeList	
    	 * 	
    	 * @return javax.swing.JList	
    	 */
    	private JList getFontSizeList() {
    		if (fontSizeList == null) {
    			fontSizeList = new JList(new String[]{"3", "4", "5", "6", "7", "8", "9", "10",
    					"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "22",
    					"24", "27", "30", "34", "39", "45", "51", "60"});
    			fontSizeList.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			fontSizeList
    					.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
    						public void valueChanged(javax.swing.event.ListSelectionEvent e) {
    							if(sizeJuge){fontSizeText.setText(fontSizeList.getSelectedValue().toString());}
    							fontStyle.setFont(new Font(fontStyle.getFont().getFontName(),fontStyle.getFont().getStyle(),Integer.parseInt(fontSizeList.getSelectedValue().toString())));
    						}
    					});
    		}
    		return fontSizeList;
    	}
    	/**
    	 * This method initializes jPanel2	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getJPanel2() {
    		if (jPanel2 == null) {
    			jPanel2 = new JPanel();
    			jPanel2.setLayout(null);
    			jPanel2.setBounds(new Rectangle(3, 180, 414, 90));
    			jPanel2.setBorder(BorderFactory.createTitledBorder(null, "\u6548\u679c\u9884\u89c8", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("\u5b8b\u4f53", Font.PLAIN, 12), new Color(51, 51, 51)));
    			jPanel2.add(getJScrollPane(), null);
    		}
    		return jPanel2;
    	}
    	/**
    	 * This method initializes okButton	
    	 * 	
    	 * @return javax.swing.JButton	
    	 */
    	private JButton getOkButton() {
    		if (okButton == null) {
    			okButton = new JButton();
    			okButton.setBounds(new Rectangle(215, 275, 60, 20));
    			okButton.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			okButton.setText("确定");
    			okButton.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					judge = true;
    					closeWindow();
    				}
    			});
    		}
    		return okButton;
    	}
    	/**
    	 * This method initializes regitButton	
    	 * 	
    	 * @return javax.swing.JButton	
    	 */
    	private JButton getRegitButton() {
    		if (regitButton == null) {
    			regitButton = new JButton();
    			regitButton.setBounds(new Rectangle(285, 275, 60, 20));
    			regitButton.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			regitButton.setText("重置");
    			regitButton.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					initializeFont(null);
    				}
    			});
    		}
    		return regitButton;
    	}
    	/**
    	 * This method initializes cancleButton	
    	 * 	
    	 * @return javax.swing.JButton	
    	 */
    	private JButton getCancleButton() {
    		if (cancleButton == null) {
    			cancleButton = new JButton();
    			cancleButton.setBounds(new Rectangle(355, 275, 60, 20));
    			cancleButton.setFont(new Font("\u5b8b\u4f53", Font.PLAIN, 12));
    			cancleButton.setText("取消");
    			cancleButton.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					judge = false;
    					closeWindow();
    				}
    			});
    		}
    		return cancleButton;
    	}
    	/**
    	 * This method initializes jScrollPane1	
    	 * 	
    	 * @return javax.swing.JScrollPane	
    	 */
    	private JScrollPane getJScrollPane1() {
    		if (jScrollPane1 == null) {
    			jScrollPane1 = new JScrollPane();
    			jScrollPane1.setBounds(new Rectangle(5, 50, 150, 120));
    			jScrollPane1.setViewportView(getFontNameList());
    		}
    		return jScrollPane1;
    	}
    	/**
    	 * This method initializes jScrollPane2	
    	 * 	
    	 * @return javax.swing.JScrollPane	
    	 */
    	private JScrollPane getJScrollPane2() {
    		if (jScrollPane2 == null) {
    			jScrollPane2 = new JScrollPane();
    			jScrollPane2.setBounds(new Rectangle(160, 50, 120, 120));
    			jScrollPane2.setViewportView(getFontItalicList());
    		}
    		return jScrollPane2;
    	}
    	/**
    	 * This method initializes jScrollPane3	
    	 * 	
    	 * @return javax.swing.JScrollPane	
    	 */
    	private JScrollPane getJScrollPane3() {
    		if (jScrollPane3 == null) {
    			jScrollPane3 = new JScrollPane();
    			jScrollPane3.setBounds(new Rectangle(285, 50, 120, 120));
    			jScrollPane3.setViewportView(getFontSizeList());
    		}
    		return jScrollPane3;
    	}
    	
    	/**
    	 * 默认的字体初始化方法
    	 * */
    	private void initializeFont(Font font){
    		if(font!=null){
    			defaultFont = font;
    			fontStyle.setFont(defaultFont);
    		}
    		fontStyle.setFont(defaultFont);
    		fontNameList.setSelectedValue(defaultFont.getFontName(), true);
    		fontSizeList.setSelectedValue(new Integer(defaultFont.getSize()).toString(), true);
    		fontItalicList.setSelectedIndex(defaultFont.getStyle());
    	}
    	/**
    	 * 判断里给定的值最近的索引
    	 * */
    	private Object getLateIndex(JList jlist,String str){
    		ListModel list = jlist.getModel();
    		if(str.matches("(\\d)+")){
    			for(int i = list.getSize()-1;i>=0;i--){
    				if(Integer.parseInt(list.getElementAt(i).toString())<=Integer.parseInt(str)){
    					return list.getElementAt(i);
    				}
    			}
    		}else {
    			for(int i = list.getSize()-2;i>=0;i--){
    				if(str.compareToIgnoreCase(list.getElementAt(i).toString())==0){
    					return list.getElementAt(i);
    				}else if(str.compareToIgnoreCase(list.getElementAt(i).toString())>0){
    					return list.getElementAt(i+1);
    				}
    			}
    		}
    		return list.getElementAt(0);
    	}
    	/**
    	 * 窗体关闭方法!
    	 * */
    	private void closeWindow(){
    		this.setVisible(false);
    	}
    }  //  @jve:decl-index=0:visual-constraint="91,34"
    

     

    展开全文
  • 药读书心得700 读完鲁迅先生《药》以后,使我知道当时旧社会就是一个吃人...颈项都伸得很,仿佛许多鸭,被无形手捏住了,向上着。静了一会,似乎有点声音,便又动摇起来,轰一声,都向后退;一直散到...
  • 引言数字信号有两种传输方式分别是基带传输方式和调制传输方式即带通在实际应用中因基带信号含有大量低频分量不利于传送所以必须经过载波和调制形成带通信号通过数字基带信号对载波某些参量进行控制使之随机信号...
  • Java中时间计算

    2019-08-09 16:29:35
    最近做项目涉及到时间计算,这里拿出一个以年为增长计算,关于日期计算可以借助Calendar类,其中涉及使用正则去得到字符串中数字参加计算,顺Pattern类和Matcher类。 Pattern类:pattern 对象是一个...

    最近做项目涉及到时间的计算,这里拿出一个以年为增长的计算,关于日期的计算可以借助Calendar类,其中涉及使用正则去得到字符串中的数字参加计算,顺带一提Pattern类和Matcher类。

    Pattern类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数


    Matcher类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要 调用 Pattern 对象的matcher 方法来获得一个 Matcher 对象。 

    部分代码如下:

        public int inserMaintainHeader(MaintainHeader maintainHeader) {
    
            maintainHeader.setId(IdGenerateUtil.generateId());
            maintainHeader.setCreateBy("test");
            maintainHeader.setCreateDate(new Date());
            Pattern pattern = Pattern.compile("[^0-9]");
            //这里前端传的值为"1年","2年"...而我们只需要拿到数字1或2去参与计算
            String warrantyPeriod = maintainHeader.getWarrantyPeriod();
            if (StringUtils.isNotBlank(warrantyPeriod)) {
                Matcher matcher = pattern.matcher(warrantyPeriod);
                String yearStr = matcher.replaceAll("");
                int year = Integer.parseInt(yearStr);
    
                //计算保养计划结束时间
                //1,合格证日期早于开梯日期
                Date qualifiedDate = maintainHeader.getQualifiedDate();//获取合格证日期
                Date ladderDate = maintainHeader.getLadderDate();//获取开梯日期
                Calendar calendar = new GregorianCalendar();
                Date afterDate = new Date();
                if (qualifiedDate.getTime() <= ladderDate.getTime()) {
                    calendar.setTime(qualifiedDate);
                    calendar.add(calendar.YEAR, year);
                    afterDate=calendar.getTime();
                    maintainHeader.setPlanEndDate(afterDate);
                }
                //2,合格证日期晚于开梯日期
                if (qualifiedDate.getTime() > ladderDate.getTime()) {
                    calendar.setTime(maintainHeader.getInspectPassDate());
                    calendar.add(calendar.YEAR, year);
                    afterDate=calendar.getTime();
                    maintainHeader.setPlanEndDate(afterDate);
                }
    
            }
    
            int i = this.dao.insert(maintainHeader);
            return i;
        }

     

    展开全文
  • 今天上课,老师让我们用matlab进行汉明码编码译码实现,之前上通信原理课程时候老师顺带提过一句,现在已然是记不太清了,所以上网搜索了一下关于汉明码原理。 汉明码(Hamming Code),是在电信领域一种...

    今天上课,老师让我们用matlab进行汉明码编码译码的实现,之前上通信原理课程的时候老师顺带提过一句,现在已然是记不太清了,所以上网搜索了一下关于汉明码的原理。

     

    汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。。。。。。

    简单来说,汉明码就是一个可以校验和纠错的编码。

    首先记住一个公式:2^{k}>n+k, n是你要编码的数组长度,k是验证码字的个数

    我们现在以k=4,n=7的实例来说明汉明码的编码原理:

    a=[1,0,1,0,1,1,1]

    因为n+k=11,我们要编码出来的是一个长度为11的数组,其中四位是校验码

    根据k值的不同,我们可以吧原始数组分为k组,将原始数组的下标分别转换为二进制

    第一组的分别是末位为1的下标:XXX1

    第二组的分别是次末位为1的下标:XX1X

    第三组的分别是次位为1的下标:X1XX

    第四组的分别是首位为1的下标:1XXX

    所以第一组P1的下标分别为:3,5,7,9,11

    第二组:3,6,7,10,11

    第三组:5,6,7

    第四组:9,10,11

    每一个校验位的数值是组内每一个元素数值的奇偶数

    对于译码:

    假设接收到长度为11的数组进行译码,先取出校验码,然后用每个组的元素进行奇偶的校验,如果错误,则该组的一个校验状态转为错误,记为1,通过对四个组进行奇偶校验,用每个组的奇偶校验值可以得出一个数组,用该数组即可算出数据错误位置

    假设传递时最后一位发生错误,则1,3,4组受到影响,校验数组为[1,0,1,1],通过计算2^3+2^1+2^0=11为错误位置

    以下为代码:

    clc
    a=[1,0,1,0,1,1,1];
    a
    h1=HamingCode(a,4);
    h1
    h2=HamingDecode(h1,4);
    h2
    function h = HamingCode(a,k)
    
    n=length(a(:));
    z=1;
    j=1;
    h=zeros(1,n+k);
    for i=1:n+k                 %将输入数组写入全零矩阵待用,且跳过验证
        if i==2^(z-1)
            z=z+1;
            continue
        else 
            h(i)=a(j);
            j=j+1;
        end
    end
    
    if k==4
        h(1)=rem(h(3)+h(5)+h(7)+h(9)+h(11),2);
        h(2)=rem(h(3)+h(6)+h(7)+h(10)+h(11),2);
        h(4)=rem(h(5)+h(6)+h(7),2);
        h(8)=rem(h(9)+h(10)+h(11),2);
        
        else if k==3
            h(1)=rem(h(3)+h(5)+h(7),2);
            h(2)=rem(h(3)+h(6)+h(7),2);
            h(4)=rem(h(5)+h(6)+h(7),2);
    
        else if k==2
            h(1)=rem(h(3),2);
            h(2)=rem(h(3),2);
            end
            end
    end
    function h = HamingDecode(a,k)
    %a=[1,0,1,1,0,1,0,1,1,1,0];
    n=length(a(:));     %求输入数组长度
    h=zeros(1,n-k);     %解码和译码的n含义不同
    check=zeros(1,k);   %四个组的验证数组
    che=0;
    if k==4
        if  a(1)~=rem(a(3)+a(5)+a(7)+a(9)+a(11),2);                 %四个组,如果有任意一个组验证不通过,则相应数组的变量变为1,标志位che变成1,方便后面修改
            check(1)=1
            che=1
            else if  a(2)~=rem(a(3)+a(6)+a(7)+a(10)+a(11),2);
                    check(2)=1
                    che=1;
            else if  a(4)~=rem(a(5)+a(6)+a(7),2);
                    check(4)=1
                    che=1;
            else if  a(8)~=rem(a(9)+a(10)+a(11),2);
                    check(8)=1
                    che=1;
                end
                end
                end
        end
    j=1;
    z=1;
        if che==1           %假如验证生效
            s= 2^(3*check(1))+2^(2*check(2))+2^(1*check(3))+2^(check(4)*0)
            a(s)=1-a(s)
        end
        
        for i=1:n           %跳过验证码,将数组写入输出数组
            if i==2^(z-1)
                z=z+1;
                continue
            else 
                h(j)=a(i);
                j=j+1;
            end
        end
    end

    本人对于汉明码理解借鉴了其他博主文章,传送门:https://blog.csdn.net/Yonggie/article/details/83186280

    展开全文
  • 还是VC++中有关显示图像的问题。 我们在显示一幅比较大的图像时,要使用标准滚动条的对话框。涉及对滚动条的操作就不得不SCROLLINFO这个结构体。只看单词意思就这道这个结构体... // SCROLLINFO结构体长度的字...

    还是VC++中有关显示图像的问题。

    我们在显示一幅比较大的图像时,要使用带标准滚动条的对话框。涉及对滚动条的操作就不得不提SCROLLINFO这个结构体。只看单词意思就这道这个结构体要储存滚动条的一些信息。究竟是哪些信息呢?我们先看看这个结构体的定义:

    typedef struct tagSCROLLINFO
    {
      UINT cbSize ;   // SCROLLINFO结构体长度的字节数
      UINT fMask ;    // 指定结构体中哪些成员有效
      int nMin;       // 滚动范围最小尺寸
      int nMax;        // 滚动范围的最小尺寸
      UINT nPage ;        // 页尺寸,用来确定比例滚动框的大小
      int nPos ;     // 滚动框的位置
      int nTrackPos ;   //
    }SCROLLINFO,*LPSCROLLINFO;
    typedef SCROLLINFO CONST *LPCSCROLLINFO
     
    好了,与其说这个结构体储存的是滚动条的信息,不如说它储存了滚动块的信息。滚动块就是滚动条上的那个滑块。下面我们具体说说这个结构体中几个成员的含义。
    首先,fMask,指定哪些成员有效,它的值是这些常亮:SIF_ALL,表示整个结构体都有效,SIF_PAGE,表示nPage成员有效,SIF_POS:nPos成员有效,SIF_RANGE, nMax和nMin有效。这些常量可以用或连接。
    nMin:这个值我们通常都设定为0
    nMax: 对于这个值,如果我们想在整个客户区显示一个比客户区还要大的图片,这个值就应该等于图片大小和客户区大小的差(水平和竖直两个方向上)
    nPage:这个属性表示页尺寸,怎么理解这个属性呢。首先,它的设置是为了根据比例确定滚动块的大小。这个值通常就取客户区的大小。但是要特别注意:当nMax<=nPage时,这时候如果使用nPage属性,将不会显示滚动条!!!!前面说过,nPage的设置是为了根据比例设置滚动块的大小。我们平时看到的滚动条的滚动块有大有小,有的滚动块的大小还会随着浏览篇幅的变化而变化。与这个nPage属性有很大关系。但是:nMax<=nPage不代表没有必要使用滚动条,只要nMax>nMin ,就是需要滚动条的,但是当nMax<nPage时,我们通常不设置nPage 属性(设置分fMask时不选SIF_PAGE),这样就可以显示出滚动条了,只不过滚动块的大小是标准大小,不是根据比例确定的大小而已。

    转载于:https://www.cnblogs.com/qingergege/p/4983036.html

    展开全文
  • 程序员高手是怎样炼成?

    千次阅读 2012-11-01 14:43:13
    偶小时候在农村混,看最多是各式各样牛屎以及得极象牛屎山头,这些所谓名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写文字或COLORBOOKS。偶之所以写这么个主题,主要是...
  • 来源:中国大数据 本文长度为2721,建议阅读4分钟 ...如果你发现某个问题当前最优结果已过时或丢失,请作为问题出来(附带:论文名称、数据集、指标、源代码、年份),我们会立即更正。 这是为所有类
  • 全文共3133,预计学习时11分钟 图源:unsplash 五年前,当Apple Watch第一次上市时候,笔者和《圈》杂志Jim Dalrymple一起,在帕洛阿尔托苹果专卖店门前排了几小时队。 大部分人都曾在九月份...
  • 程序员是怎样炼成

    2007-01-08 18:48:00
    偶小时候在农村混,看最多是各式各样牛屎以及得极象牛屎山头,这些所谓名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写文字或COLORBOOKS。偶之所以写这么个主题,主要是...
  • 程序员高手是怎样练成

    千次阅读 2008-01-07 11:31:00
    偶小时候在农村混,看最多是各式各样牛屎以及得极象牛屎山头,这些所谓名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写文字或COLORBOOKS。偶之所以写这么个主题,主要是...
  • 偶小时候在农村混,看最多是各式各样牛屎以及得极象牛屎山头,这些所谓名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写文字或COLORBOOKS。偶之所以写这么个主题,主要是...
  • “万能公式”2:右下结右上结是横和短横、撇的连写,只要是十字头的字通基本都是通用的。在书写注意笔画之间的牵丝连可断可连。“万能公式3”:“2”字符行书连书写时,字与字之间有相似的笔画可以用符号代替...
  • CruiseYoung提供的带有详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 计算机图形学算法基础(原书第2版) 基本信息 原书名: Procedural Elements for Computer Graphics (2E) 原...
  • 数字通信(第三版)pdf文件

    热门讨论 2010-04-01 09:26:29
    第3章~第6章 供关于数字调制/解调和检测方法基本论述。第7和第8章论述信道编码可与调制和解 调一起作为一 学期课程内容。信道均衡、衰落信道、扩展频谱和多用户通信可以作为第二学期课程内 容。
  • 疯狂程序员

    热门讨论 2012-07-18 18:05:32
    他说:“妈不行我还是痛,我去城里医院吧。”去了城里医院,绝影就开始住院了,因为伤口已经严重感染。 2DOS 两周后绝影出院了。出院时候还是拄着拐杖。 这两周里,发生了两件大事:一、绝影决定追一个妹妹...
  • 这就不得不比套鞋事件更早@作业本怀孕事件,这也是大大小小微博营销沙龙必谈经典案例之一。 事情也非常简单。与每天早晨罗列热点一样,运营团队每日另一项例行工作叫做“盯大号”。甚至可以说,这是每10...
  • 这就不得不比套鞋事件更早@作业本怀孕事件,这也是大大小小微博营销沙龙必谈经典案例之一。 事情也非常简单。与每天早晨罗列热点一样,运营团队每日另一项例行工作叫做“盯大号”。甚至可以说,这是每10...
  • AT89S52 自有isp 功能,ISP 全名为In System Programming,即在线编 程通俗讲就是编MCU 从系统目标系统中移出在结合系统中一系列内部硬 件资源可实远程编程。 ISP 功能优点: ①在系统中编程不需要移出...
  • 随着博客人数增加, Blog 作为一种新生活方式、新工作方式、新学习方式已经被越来越多人所接受,并且在改变传统网络和社会结构:网络信息不再是虚假不可验证,交流和沟通更有明确选择和方向性,单一...
  • 也是人类历史上第二个由国家发行数字货币,据悉,蒙古国政府相关部门正与蒙古风币wsec负责发行方蒙古国太阳路有限公司董事宝音道尔吉进行深度商谈,争取尽快将蒙古风币wsec发行上日程。2018年2月9日,...
  • 最近这几天,时间以来处于领涨地位比特币上涨步伐开始减缓,币价一直在18,000刀来回震荡。但是,比特币回调,并不意味着数字货币行情结束。因为币圈行情已经从最开始一枝独秀转变成为百花齐放。最近大家...
  • 2.8 删除时确认 示 2.9 按钮只能单击一次 2.10 防止按钮连击 2.11 图片式按钮 2.12 文字显示在按钮底部 2.13 选择不同列表项就显示不同按钮 2.14 使用按钮控制文本渐变 2.15 翻页效果公告栏 2.16 动态...
  • 距离传输效率)等等,去提供高效快速 DNS 解析服务。 <h2>TCP 连接 目前大部分应用层连接都是 HTTP 协议,而 HTTP 是 TCP/IP 承载,所以这一步先假定是建立 TCP 连接。 <h3>IP ...
  • 菊子曰 V5.4 G85.zip

    2019-07-15 10:14:09
     改变了微博如果加上大图后会导致默认大小情况下文字不容易阅读问题。  重新处理了新浪博客改版后没法使用问题。  重新处理了搜狐微博支持,稳定搜狐微博各项功能。  解决了 QQ 空间密码如果有特殊...
  • java基础入门教程

    热门讨论 2009-04-29 21:36:10
    ), 但当 时 并 没 有 引 起 人 们 注 意 ,直 到 1994年下 半 年 ,Internet 迅猛发 展 ,环 球 信 息 网 WWW 快 速 增 ,促 进 了 Java 语 言 研 制 进展 ,使 得 它 逐 渐 成为 Int ernet上 受 欢 迎 ...

空空如也

空空如也

1 2 3 4 5
收藏数 85
精华内容 34
关键字:

带长提的字