JavaMe 编程连载(8) - 换肤的实现

2024-03-12 17:48
文章标签 java 实现 编程 连载 换肤

本文主要是介绍JavaMe 编程连载(8) - 换肤的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【问题描述】

kf156(亚日)在多级菜单实现中,实现了换肤的功能。本文借鉴了kf156(亚日)的部分代码,利用JavaMe连载(7)-数据永久存储所提到的rms实现了换肤的处理。

【代码清单】

Color.java

(借鉴了kf156(亚日)的代码,有所改动,感谢署名为kf156(亚日)的网友,他的代码风格确实很好)

package com.token.view.components;
/**
* 颜色类
* 
* @author kf156(亚日)
* 
* @Email kf156@QQ.com
* 
* @CopyrightNotice 此代码仅供学习交流,您可以使用并传播本源代码,但请保留作者信息。切勿商用,若有需要,请先于本人联系。
*/
public class Color {
public static int strong = 0xFF8C00;//令牌显示颜色
public static int warning1 = 0xFF4500;// 警告颜色
public static int warning2 = 0xFF0000;// 警告颜色
public static int error = 0xFF0000;// 错误颜色
public static int background = 0xF0FAE6;// 背景颜色
public static int menuFrame = 0xB8E58A;// 窗体框架颜色
public static int label = 0xF0F8FF;// 标题颜色
public static int text = 0x314F12;// 正文颜色
public static int selectText = 0xFFFFFF;// 被选择后的正文颜色
public static int selectBg = 0x548720;// 被选择后的背景颜色
public static int cmdBarTop = 0x9FDB63;// 命令栏上半部分颜色
public static int cmdBarBottom = 0x81D130;// 命令栏下半部分颜色
public static int menuBg = 0xE0F5CB;// 命令菜单主背景色
public static int cmdSelectTop = 0x7DAB4F;// 命令菜单选中项上半部分颜色
public static int cmdSelectBottom = 0x5B9422;// 命令菜单选中项下半部分颜色
public static int linkClick = 0xFF0000;// 超链接点击后的颜色
public static int frame = 0x458B00;//边框颜色
public static int frameBg = 0x556B2F;//边框背景颜色
public static final int GREY = 0xBBBBBB;// 灰边框
public static final int BLACK = 0x0;// 黑色
public static final int WHITE = 0xFFFFFF;// 白色
public static final int TRANSLUCENCY_WRITE = 0x55FFFFFF;// 白色半透明
public static final int TRANSLUCENCY_BLACK = 0x55000000;// 黑色半透明
public static final byte STYLE_RED = 0;// 红色
public static final byte STYLE_ORANGE = 1;// 橙色
public static final byte STYLE_YELLOW = 2;// 黄色
public static final byte STYLE_GREEN = 3;// 绿色
public static final byte STYLE_LIME = 4;// 酸橙色
public static final byte STYLE_CYAN = 5;// 青色
public static final byte STYLE_AQUA = 6;// 浅绿色
public static final byte STYLE_SKY_BLUE = 7;// 天蓝色
public static final byte STYLE_BLUE = 8;// 蓝色
public static final byte STYLE_PURPLE = 9;// 紫色
public static final byte STYLE_FUCHSIA = 10;// 紫红色
public static final byte STYLE_MAGENTA = 11;// 红紫色
public static final byte STYLE_BLACK = 12;// 黑色
public static int colorName = STYLE_GREEN;// 风格名称
// 红色风格H0(#FF0000)
private static void redColor() {
background = 0xFAE7E7;// 背景颜色
label = 0xFAEBD7;// 标题颜色
text = 0x4F1212;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0xE58A8A;// 窗体框架颜色
menuBg = 0xF5CBCB;// 命令菜单主背景色
selectBg = 0x872020;// 被选择后的背景颜色
cmdBarTop = 0xDB6363;// 命令栏上半部分颜色
cmdBarBottom = 0xD13030;// 命令栏下半部分颜色
cmdSelectTop = 0xAB4F4F;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x942222;// 命令菜单选中项下半部分颜色
frame = 0xF70909;//边框颜色
frameBg = 0xD52B2B;//边框背景颜色
}
// 橙色风格H30(#FF7F00)
private static void orangeColor() {
background = 0xFAF0E6;// 背景颜色
label = 0xFFE4B5;// 标题颜色
text = 0x4F3112;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0xE5B88A;// 窗体框架颜色
menuBg = 0xF5E0CB;// 命令菜单主背景色
selectBg = 0x875420;// 被选择后的背景颜色
cmdBarTop = 0xDB9F63;// 命令栏上半部分颜色
cmdBarBottom = 0xD18130;// 命令栏下半部分颜色
cmdSelectTop = 0xAB7D4F;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x945B22;// 命令菜单选中项下半部分颜色
frame = 0xF76809;//边框颜色
frameBg = 0xD56F2B;//边框背景颜色
}
// 黄色风格H60(#FFFF00)
private static void yellowColor() {
background = 0xFAFAE6;// 背景颜色
label = 0xFFFACD;// 标题颜色
text = 0x4F4F12;// 正文颜色
// selectText = 0xFFFF00;// 被选择后的正文颜色
menuFrame = 0xE5E58A;// 窗体框架颜色
menuBg = 0xF5F5CB;// 命令菜单主背景色
selectBg = 0x878720;// 被选择后的背景颜色
cmdBarTop = 0xDBDB63;// 命令栏上半部分颜色
cmdBarBottom = 0xD1D130;// 命令栏下半部分颜色
cmdSelectTop = 0xABAB4F;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x949422;// 命令菜单选中项下半部分颜色
frame = 0xF7C709;//边框颜色
frameBg = 0xD5D52B;//边框背景颜色
}
// 绿色风格H90(#80FF00)
private static void greenColor() {
background = 0xF0FAE6;// 背景颜色
label = 0xF0F8FF;// 标题颜色
text = 0x314F12;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0xB8E58A;// 窗体框架颜色
menuBg = 0xE0F5CB;// 命令菜单主背景色
selectBg = 0x548720;// 被选择后的背景颜色
cmdBarTop = 0x9FDB63;// 命令栏上半部分颜色
cmdBarBottom = 0x81D130;// 命令栏下半部分颜色
cmdSelectTop = 0x7DAB4F;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x5B9422;// 命令菜单选中项下半部分颜色
frame = 0x458B00;//边框颜色
frameBg = 0x556B2F;//边框背景颜色
}
// 酸橙色风格H120(0x00FF00)
private static void limeColor() {
background = 0xE6FAE6;// 背景颜色
label = 0xEEE9BF;// 标题颜色
text = 0x124F12;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0x8AE58A;// 窗体框架颜色
menuBg = 0xCBF5CB;// 命令菜单主背景色
selectBg = 0x208720;// 被选择后的背景颜色
cmdBarTop = 0x63DB63;// 命令栏上半部分颜色
cmdBarBottom = 0x30D130;// 命令栏下半部分颜色
cmdSelectTop = 0x4FAB4F;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x229422;// 命令菜单选中项下半部分颜色
frame = 0x09F738;//边框颜色
frameBg = 0x2BD54D;//边框背景颜色
}
// 青色风格H150(0x00FF80)
private static void cyanColor() {
background = 0xE6FAF0;// 背景颜色
label = 0xE0FFFF;// 标题颜色
text = 0x124F31;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0x8AE5B8;// 窗体框架颜色
menuBg = 0xCBF5E0;// 命令菜单主背景色
selectBg = 0x208754;// 被选择后的背景颜色
cmdBarTop = 0x63DB9F;// 命令栏上半部分颜色
cmdBarBottom = 0x30D181;// 命令栏下半部分颜色
cmdSelectTop = 0x4FAB7D;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x22945B;// 命令菜单选中项下半部分颜色
frame = 0x4DB34D;//边框颜色
frameBg = 0x8AB34D;//边框背景颜色
}
// 浅绿色风格H180(#00FFFF)
private static void aquaColor() {
background = 0xE6FAFA;// 背景颜色
label = 0xE0EEE0;// 标题颜色
text = 0x445500;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0x88AA55;// 窗体框架颜色
menuBg = 0xE6FAFA;// 命令菜单主背景色
selectBg = 0xAECC33;// 被选择后的背景颜色
cmdBarTop = 0xBDE61A;// 命令栏上半部分颜色
cmdBarBottom = 0xB8DD22;// 命令栏下半部分颜色
cmdSelectTop = 0xB8DD22;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0xB3D52B;// 命令菜单选中项下半部分颜色
frame = 0x8E8E38;//边框颜色
frameBg = 0x8B8B00;//边框背景颜色
}
// 天蓝色风格H210(#0080FF)
private static void skyBlueColor() {
background = 0xE6F0FA;// 背景颜色
label = 0xE0FFFF;// 标题颜色
text = 0x12314F;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0x8AB8E5;// 窗体框架颜色
menuBg = 0xCBE0F5;// 命令菜单主背景色
selectBg = 0x205487;// 被选择后的背景颜色
cmdBarTop = 0x639FDB;// 命令栏上半部分颜色
cmdBarBottom = 0x3081D1;// 命令栏下半部分颜色	
cmdSelectTop = 0x4F7DAB;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x225B94;// 命令菜单选中项下半部分颜色
frame = 0x0997F7;//边框颜色
frameBg = 0x2BB3D5;//边框背景颜色
}
// 深蓝色风格H240(#0000FF)
private static void blueColor() {
background = 0xE6E6FA;// 背景颜色
label = 0xE0EEEE;// 标题颜色
text = 0x12124F;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0x8A8AE5;// 窗体框架颜色
menuBg = 0xCBCBF5;// 命令菜单主背景色
selectBg = 0x202087;// 被选择后的背景颜色
cmdBarTop = 0x6363DB;// 命令栏上半部分颜色
cmdBarBottom = 0x3030D1;// 命令栏下半部分颜色
cmdSelectTop = 0x4F4FAB;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x222294;// 命令菜单选中项下半部分颜色
frame = 0x0909F7;//边框颜色
frameBg = 0x2B2BD5;//边框背景颜色
}
// 紫色风格H270(#8000FF)
private static void purpleColor() {
background = 0xF0E6FA;// 背景颜色
label = 0xFDF5E6;// 标题颜色
text = 0x31124F;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0xB88AE5;// 窗体框架颜色
menuBg = 0xE0CBF5;// 命令菜单主背景色
selectBg = 0x542087;// 被选择后的背景颜色
cmdBarTop = 0x9F63DB;// 命令栏上半部分颜色
cmdBarBottom = 0x8130D1;// 命令栏下半部分颜色
cmdSelectTop = 0x7D4FAB;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x5B2294;// 命令菜单选中项下半部分颜色
frame = 0x6809F7;//边框颜色
frameBg = 0x6F2BD5;//边框背景颜色
}
// 紫红色风格H300(#FF00FF)
private static void fuchsiaColor() {
background = 0xFAE6FA;// 背景颜色
label = 0xFAF0E6;// 标题颜色
text = 0x4F124F;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0xE58AE5;// 窗体框架颜色
menuBg = 0xF5CBF5;// 命令菜单主背景色
selectBg = 0x872087;// 被选择后的背景颜色
cmdBarTop = 0xDB63DB;// 命令栏上半部分颜色
cmdBarBottom = 0xD130D1;// 命令栏下半部分颜色	
cmdSelectTop = 0xAB4FAB;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x942294;// 命令菜单选中项下半部分颜色
frame = 0x9709F7;//边框颜色
frameBg = 0xB32BD5;//边框背景颜色
}
// 红紫色风格H330(#FF007F)
private static void magentaColor() {
background = 0xFAE6F0;// 背景颜色
label = 0xFFEFD5;// 标题颜色
text = 0x4F1231;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0xE58AB8;// 窗体框架颜色
menuBg = 0xF5CBE0;// 命令菜单主背景色
selectBg = 0x872054;// 被选择后的背景颜色
cmdBarTop = 0xDB639F;// 命令栏上半部分颜色
cmdBarBottom = 0xD13081;// 命令栏下半部分颜色		
cmdSelectTop = 0xAB4F7D;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x94225B;// 命令菜单选中项下半部分颜色
frame = 0xC709F7;//边框颜色
frameBg = 0xD52BD5;//边框背景颜色
}
//黑色风格(#000000)
private static void blackColor() {
background = 0xEDEDED;// 背景颜色
label = 0xEAEAEA;// 标题颜色
text = 0x030303;// 正文颜色
// selectTextColor = 0xFFFFFF;// 被选择后的正文颜色
menuFrame = 0x2E2E2E;// 窗体框架颜色
menuBg = 0xC9C9C9;// 命令菜单主背景色
selectBg = 0x4A4A4A;// 被选择后的背景颜色
cmdBarTop = 0x3B3B3B;// 命令栏上半部分颜色
cmdBarBottom = 0x383838;// 命令栏下半部分颜色
cmdSelectTop = 0x2E2E2E;// 命令菜单选中项上半部分颜色
cmdSelectBottom = 0x0D0D0D;// 命令菜单选中项下半部分颜色
frame = 0x0A0A0A;//边框颜色
frameBg = 0x636363;//边框背景颜色
}
// 风格切换
public static void nextColor() {
set(++colorName);
}
/**
* 设置颜色
* 
*/
public static void set(int color) {
// System.out.println(color);
switch (color) {
case STYLE_RED:// 红色
redColor();
break;
case STYLE_ORANGE:// 橙色
orangeColor();
break;
case STYLE_YELLOW:// 黄色
yellowColor();
break;
case STYLE_GREEN:// 绿色
greenColor();
break;
case STYLE_LIME:// 酸橙色
limeColor();
break;
case STYLE_CYAN:// 青色
cyanColor();
break;
case STYLE_AQUA:// 浅绿色
aquaColor();
break;
case STYLE_SKY_BLUE:// 天蓝色
skyBlueColor();
break;
case STYLE_BLUE:// 蓝色
blueColor();
break;
case STYLE_PURPLE:// 紫色
purpleColor();
break;
case STYLE_FUCHSIA:// 紫红色
fuchsiaColor();
break;
case STYLE_MAGENTA:// 红紫色
magentaColor();
break;
case STYLE_BLACK:// 红紫色
blackColor();
break;
default:// 颜色循环完毕,返回红色
colorName = STYLE_RED;
redColor();// RED
break;
}
}
// 设置新风格
public static void setNewColor(int newColor) {
background = newColor;
menuFrame = background - 0x3A155D;
label = background - 0x25A8E5;
text = background - 0xC0ACD5;
selectText = background + 0x100518;
selectBg = background - 0x9D72C7;
cmdBarTop = background - 0x531E84;
cmdBarBottom = background - 0x742AB8;
}
}

 

ConfigureDataItem.java

package com.token.model;
//import com.token.util.StringDealMethod;
public class ConfigureDataItem {
private int id;
public String color = null;
public ConfigureDataItem(String color){
this.color = color;
}
public ConfigureDataItem(int id,byte[] data){
this.id=id;
//String temp=new String(data);
//String temp_sub[] = StringDealMethod.split(temp, ",");
this.color = new String(data);
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getColor(){
return color;
}
public void setData(String color){
this.color = color;
}
public byte[] getBytes(){
String temp=null;
if(color==null){
return null;
}else{
temp=color;
}
return temp.getBytes();
}
}


ConfigureDataRecord.java

package com.token.util;
import java.util.Vector;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import com.token.model.ConfigureDataItem;
public class ConfigureDataRecord {
private static final String RECORDSTORE_NAME="CONFIG_DB";
private static RecordStore info;
public ConfigureDataRecord(){
}
//打开RecordStore,没有则创建
public void openDataBase() {
try {
info = RecordStore.openRecordStore(RECORDSTORE_NAME, true);
}catch (RecordStoreException ex) {            
info =null;
}
}
//关闭RecordStore
public void closeDataBase() {
if (info!= null) {
try {
info.closeRecordStore();
info=null;
} catch (RecordStoreException ex) {}
}
}
//增加记录
public int db_addRecord(ConfigureDataItem item) {
try {
this.openDataBase();
byte[] data=item.getBytes();
int id=info.getNextRecordID();
info.addRecord(data,0,data.length);
this.closeDataBase();
return id;
} catch (RecordStoreException ex) { }
return -1;
}
//更新记录
public void db_updateRecord(ConfigureDataItem item){
try {
this.openDataBase();      
byte[] data=item.getBytes();
info.setRecord(item.getId(),data,0,data.length);
this.closeDataBase();
} catch (RecordStoreException ex) { }
}
//访问一条记录
public ConfigureDataItem db_getRecord(int id){
ConfigureDataItem item=null;
try {
this.openDataBase();
item = new ConfigureDataItem(id,info.getRecord(id));
this.closeDataBase();
} catch (RecordStoreException ex) { }
return item;
}
//删除一条记录
public void db_deleteRecord(int id){
try {
this.openDataBase();
info.deleteRecord(id);
this.closeDataBase();
} catch (RecordStoreException ex) {}
}
//删除所有记录
public void db_deleteAllRecord(){
try {
RecordStore.deleteRecordStore(RECORDSTORE_NAME);
} catch (RecordStoreException ex) {}
}
//访问所有记录
public Vector db_getRecords(){
Vector items=new Vector(10,3);
this.openDataBase();//打开RecordStore
RecordEnumeration enum1=null;
int ind=0;
try{
ConfigureDataItem item=null;
enum1=info.enumerateRecords(null,new InnerComparator(),false);
while(enum1.hasPreviousElement()){
ind=enum1.previousRecordId();
item=new ConfigureDataItem(ind,info.getRecord(ind));
items.addElement(item);
}
}catch(Exception ex){ex.printStackTrace();}
finally{
try{
enum1.destroy();
}catch(Exception e){}
this.closeDataBase();//关闭RecordStore
}//end finally
return items;
}
//一个简单的比较器
private class InnerComparator implements RecordComparator{
public int compare(byte[] rec1, byte[] rec2){
if(rec1.length>rec2.length)
return FOLLOWS;
else if(rec1.length<rec2.length)
return PRECEDES;
else 
return EQUIVALENT;
}
}
}


Configure.java

package com.token.util;
import com.token.model.ConfigureDataItem;
import com.token.view.components.Color;
public class Configure 
{
private static ConfigureDataRecord confRecord = new ConfigureDataRecord();
public Configure()
{
}
public static void configureColor()
{
int id = 1;
if(confRecord.db_getRecord(1)==null)
{
ConfigureDataItem confItem = new ConfigureDataItem(1,"3".getBytes());
id=confRecord.db_addRecord(confItem);
}
ConfigureDataItem confItem1 = confRecord.db_getRecord(id);
Color.set(Integer.valueOf(confItem1.getColor()).intValue());
}
}


【分析】

1 在启动时,调用

Configure.configureColor();

对颜色进行配置。

 

2 换肤的实现

在按键事件keyPressed()中,对按键进行判断。

(1) 设置颜色,调用

Color.set(color);

(2) 更新颜色配置记录

ConfigureDataItem confItem = new ConfigureDataItem(1,String.valueOf(color).getBytes());
confRecord.db_updateRecord(confItem);

(3) 刷新画面

String flag = "0";
Object [] args = {flag,""};
controller.handleEvent(UIController.EventID.EVENT_MAIN_SCREEN, args);

【代码清单】

protected void keyPressed(int keyCode) 
{
...
switch(currentlySelectedIndex)
{
...
case 4:
{
color = Integer.valueOf(confRecord.db_getRecord(1).color).intValue();
if(color<12)
{
color++;
}
else
{
color = 0;
}
Color.set(color);
ConfigureDataItem confItem = new ConfigureDataItem(1,String.valueOf(color).getBytes());
confRecord.db_updateRecord(confItem);
String flag = "0";
Object [] args = {flag,""};
controller.handleEvent(UIController.EventID.EVENT_MAIN_SCREEN, args);
break;
}
}
....
}

换肤后,将永久生效。实现效果,如图1、2所示:

图1 换肤前

 

图2 换肤后

 

 

 

 

 

转载请标明出处,仅供学习交流,勿用于商业目的

Copyright @ http://blog.csdn.net/tandesir

 

 

 

 

 

 


 

 

这篇关于JavaMe 编程连载(8) - 换肤的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/802082

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听