Cobb141
码龄5年
关注
提问 私信
  • 博客:45,673
    45,673
    总访问量
  • 27
    原创
  • 1,720,129
    排名
  • 3
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2019-12-25
博客简介:

Cobb141的博客

查看详细资料
个人成就
  • 获得14次点赞
  • 内容获得6次评论
  • 获得103次收藏
  • 代码片获得493次分享
创作历程
  • 1篇
    2022年
  • 12篇
    2021年
  • 14篇
    2020年
成就勋章
TA的专栏
  • Java
    16篇
  • Spring
    1篇
  • 图形界面
    9篇
  • 并行计算
    3篇
兴趣领域 设置
  • 大数据
    hadoop
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

java验证公钥私钥是否匹配及公钥私钥与字符串相互转换

本文记录使用java生成公钥私钥,将公钥私钥转换成字符串,验证公钥私钥是否匹配。验证公钥私钥是否匹配的思想:使用公钥对字符串进行加密,再使用私钥进行解密,若解密生成的字符串与原字符串一致,则说明公钥私钥匹配。引入第三方依赖bouncycastle: <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15
原创
发布博客 2022.02.06 ·
7944 阅读 ·
3 点赞 ·
0 评论 ·
11 收藏

IT项目管理课件.zip

发布资源 2021.12.08 ·
zip

OpenGL入门教程.doc

发布资源 2021.12.08 ·
doc

代理模式(静态代理和动态代理)与SpringBoot AOP实现

代理模式代理模式分为静态代理和动态代理。代理模式类似现实世界中的中介,比如租房,中介会为双方提供公共服务,如出租房屋、看房、签合同、收取费用等;通过中介(代理),业务双方就不用操心这些繁琐的事务,房东只要将钥匙交给中介,从中介那里收租金;房客只要从中介那里拿房子,交钱给中介即可。其他事情有中介办妥。静态代理静态代理中的角色:1.抽象角色:业务的抽象,如租房这一业务,通常由接口或抽象类来实现2.真实角色:被代理的角色,如房东3.代理角色:代理真实角色,为业务双方提供服务,执行操作4.客户:访问
原创
发布博客 2021.09.01 ·
870 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

Java并发编程(六):任务取消、中断与关闭

这一节介绍并发编程中如何对任务执行取消操作。java中没有提供停止线程的方法,只用通过协作——使代码遵循一定的协议来请求取消。轮询检查一种常见的取消任务的办法是轮询检查。线程在执行的过程中通过定期检查一个boolean变量来决定是否终止任务。下面是一个使用轮询检查来终止素数生成的例子:public class PrimeGenerator implements Runnable { private static ExecutorService exec = Executors.newCache
原创
发布博客 2021.08.17 ·
1756 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Java并发编程(五):执行并发任务

Executor框架适用面Executor框架代替Thread以实现更灵活的执行策略,Executor基于生产者-消费者模式,对任务提交和执行进行了解耦。使用Executor的线程池实现web server实例:public class TaskExecutionWebServer { private static final int NTHREADS = 100; private static final Executor exec = Executors.n
原创
发布博客 2021.08.12 ·
354 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程(四):构建并发程序的机制

迭代和ConcurrentModificationException在使用迭代器或for-each对同步容器(Vector和Hashtable)进行迭代时,倘若容器在迭代期间被修改,会抛出一个ConcurrentModificationException异常。避免这个异常的常用方法是给迭代加锁,例:public List<E> list = Collections.synchronizedList(new ArrayList<E>());synchronized(list){
原创
发布博客 2021.08.11 ·
176 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程(三):组合与扩展线程安全类

这一节介绍:实现线程安全组件的常用方法如何使用线程安全的组件来组合新的组件并避免线程安全问题如何扩展已有线程安全类即使一个类中的对象不是线程安全的,但仍有许多办法将其安全地用于多线程程序。常用的方法有线程封闭、使用锁来保护对状态变量的所有的访问。java监视器模式常用的避免线程安全问题的方法:在一个类中封装所有状态变量(都是private的),并且对于访问变量的方法都使用了同步。这种模式也被称为java监视器模式。除了使用对象内部锁,还可以使用私有锁来对状态进行保护,例:public c
原创
发布博客 2021.08.09 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程(二):共享对象

可见性我们希望一个线程在修改了一个可变状态之后,这一修改对其他线程是可见的,而这仍然由同步来实现。倘若没有同步,一个线程在修改一个可变状态时,另一个线程可能读取到过期的值;除此之外,未同步的多线程会有重排序现象,即JVM为了提高效率,在执行多线程时并不是按照代码编写顺序执行的,执行顺序可能出乎预料。线程封闭与synchronized不同,synchronized通过线程等待来完成同步,避免共享数据带来的线程安全问题;而线程封闭的解决办法是不共享数据,即数据的使用在不同线程之间是隔离的,只有在本线程之
原创
发布博客 2021.08.06 ·
130 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java不可变对象

不可变类指的是其实例不可被修改的类,它更易于设计、实现和使用。不可变类应该遵循如下规则:保证类不会被扩展,一般的做法是将类声明成final的,当然还有其他方法不要提供任何修改对象状态的方法(如setter)声明所有的成员变量都是private和final的如果类具有指向可变对象的成员,则确保客户端无法获得该对象的引用,并且永远不要用客户端提供的引用对象来初始化这些属性,也不要从任何访问方法中返回该对象引用。在构造器、访问方法和readObject方法中使用拷贝性保护技术。例:public f
原创
发布博客 2021.08.06 ·
802 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Java并发编程(一):线程安全

线程安全编写线程安全代码的本质就是对状态的管理,即那些共享的、可变的状态。线程安全问题的本质是多个线程访问同一资源,这会产生隐患,解决的方法有三种:不要跨线程共享变量使状态变量为不可变的在访问状态变量时使用同步线程安全的定义:如果一个类能被多个线程安全的使用,那么它就是线程安全的。或者说,一个类在被多个线程访问时仍然能做出正确的行为。原子性:就是一个事务要么全部执行,要么一点也没有执行,不存在其他状态。要保证线程安全就要保证事务是原子地执行。要使变量为原子的,可以使用java.util.c
原创
发布博客 2021.08.05 ·
133 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java保护性拷贝

对于不可变类,我们在构造器中或方法返回引用对象时要考虑进行保护性拷贝。下面是一个不安全的例子:public final class Period{ private final Data start; private final Date end; public Period(Date start, Date end){ //此处省略参数有效性检验。。。 this.start = start; this.end = end;
原创
发布博客 2021.03.12 ·
284 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java对象通用方法equals,hashCode,toString以及Comparable接口

总括:1.覆盖equals方法时请遵守通用约定2.覆盖equals时应同时覆盖hashCode方法3.始终要覆盖toString方法4.考虑实现Comparable接口1.覆盖equals方法时请遵守通用约定不用覆盖equals的情况:(1)类的实例本质上是唯一的(2)类没有提供“逻辑相等”的功能,object的默认实现是引用相同(3)超类已经覆盖了equals,且超类的行为对于这个类也是合适的(4)类是private或protected的所以,当类具有逻辑相等的概念并且超类没有覆盖e
原创
发布博客 2021.03.04 ·
415 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Java创建和销毁对象的一些技巧和注意事项

总括1.使用静态工厂方法代替构造方法2.当构造函数有很多参数时考虑使用构建器3.用私有构造器或枚举类型实现单例模式4.在想让一个工具类不被实例化的时候使用私有构造函数5.优先考虑使用依赖注入来引用资源6.避免创建不必要的对象7.消除不必要的对象引用8.避免使用finalize和clear方法9.try-with-resources优先于try-finally1.使用静态工厂方法代替构造方法如将boolean转成Boolean对象的方法:public static Boolean va
原创
发布博客 2021.03.02 ·
433 阅读 ·
1 点赞 ·
2 评论 ·
0 收藏

MCM2021B_data.zip

发布资源 2021.02.09 ·
zip

UCI经典二分类数据集.zip

发布资源 2021.01.27 ·
zip

SpringBoot简单入门(使用vscode)

SpringBoot的作用是整合整个Spring框架各个技术栈,省去繁琐的项目配置。vscode配置Spring Boot和maven详见这里:VsCode搭建springboot 并配置maven环境Hello World使用Spring Boot的开发流程:1.创建Spring Boot工程及引入依赖vscode创建spring工程后需等待一段时间进行导入。创建工程时要选择依赖,web开发选择如下的包:DevTools(代码修改热更新,无需重启)、Web(集成tomcat、SpringMV
原创
发布博客 2021.01.10 ·
1657 阅读 ·
1 点赞 ·
1 评论 ·
8 收藏

Java Swing(九):弹出窗口

简单对话框JOptionPane对话框一般用于消息提示和读取用户输入(交互),可以给控件添加对话框。之前用到的消息窗口就是对话框。常用的几种对话框:1.showMessageDialog()//消息提示2.showConfirmDialog()//消息确认,用户选择是或否例:JOptionPane.showConfirmDialog(this, “请确认是否删除”);//返回一个整数0/1/2代表用户选择的选项3.showInputDialog()//数据输入,返回一个字符串为用户输入4.sho
原创
发布博客 2020.10.10 ·
2327 阅读 ·
1 点赞 ·
0 评论 ·
11 收藏

Java Swing(八):菜单栏的使用

菜单栏主要的类:JMenuBar(菜单项), JMenu(菜单), JMenuItem(菜单项)代码例://添加菜单 JMenuBar menubar = new JMenuBar(); this.setJMenuBar(menubar); //添加菜单项 JMenu fileMenu = new JMenu("文件"); menubar.add(fileMenu); fileMenu.add(new JM
原创
发布博客 2020.10.09 ·
399 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Java Swing(七):鼠标事件MouseEvent

鼠标事件MouseEvent可以给控件/界面添加鼠标事件有三种监听器:1.addMouseListener 点击,按住,抬起,移入,移出2.addMouseMotionListener 移动,拖动3.addMouseWheelListener 鼠标滚轮转动MouseListener接口下要覆盖五个方法:mouseClicked,mouseEntered,mouseExited,mousePressed,mouseReleased分别对应不同的鼠标事件。对于鼠标事件MouseEvent的常用方法:
原创
发布博客 2020.10.08 ·
5937 阅读 ·
2 点赞 ·
0 评论 ·
18 收藏
加载更多