总结13.11.9

简介:
登录使按钮无效
<input style="float:left;" type="submit" id = "loginSub" class="type05_button" value="登录" />

<script type="text/javascript">
function loginDeal(){
$("#loginSub").val("登录中...");
$("#loginSub").attr("disabled", "true");
}
</script>

trim():除去多余的空格。

//获取客户端ip

public static String getIpAddr() {   
       String ipAddress = null;   
        //ipAddress = this.getRequest().getRemoteAddr();   
       ipAddress = ServletActionContext.getRequest().getHeader("x-forwarded-for");   
       if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
            ipAddress = ServletActionContext.getRequest().getHeader("Proxy-Client-IP");   
       }   
       if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
            ipAddress = ServletActionContext.getRequest().getHeader("WL-Proxy-Client-IP");   
       }   
       if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
            ipAddress = ServletActionContext.getRequest().getRemoteAddr();   
           if(ipAddress.equals("127.0.0.1")){   
              //根据网卡取本机配置的IP   
               InetAddress inet = null;   
           try {   
               inet = InetAddress.getLocalHost();   
           }catch (UnknownHostException e) {   
               e.printStackTrace();   
           }   
           ipAddress= inet.getHostAddress();   
       }   
       }   
       //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割   
       if(ipAddress!=null && ipAddress.length()>15){             //"***.***.***.***".length() = 15   
           if(ipAddress.indexOf(",")>0){   
               ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));   
           }   
       }   
       return ipAddress;    
     }

 

 //时间工厂类

/**
 * 日期格式化工具类
 * @author sl 2011-11-17
 *
 */
public class FormatDate {
    
    /**
     * 得到当前系统日期,格式:yyyy-mm-dd
     * 
     * @return
     */
    public static String getCurrentDate(){
        
        return getFormatDate("yyyy-MM-dd");
    }
    /**
     * 返回年份
     * @return
     */
    public static String getCurrentYear(){
        
        return getFormatDate("yyyy");
    }
    /**
     * 返回月份
     */
    public static String getCurrentMonth(){
        return getFormatDate("MM");
    }
    /**
     * 返回特定格式的日期
     * 格式如下:
     * yyyy-mm-dd
     * @param formatString
     * @return
     */
    protected static String getFormatDate(String formatString){
        String currentDate="";
        SimpleDateFormat format1 = new SimpleDateFormat(formatString);
        currentDate = format1.format(new Date());
        return currentDate;
    }
    /**
     * 返回时间格式样式
     * @return
     */
    public static String getFormateDateAll(){
        return getFormatDate("yyyy-MM-dd HH:mm:ss");
    }
    /**
     * 获取简化时间格式
     * @return
     */
    public static String getFormateDateSimple(){
        return getFormatDate("yyyyMMddHHmmss");
    }
    /**
     * 获取几天后的时间
     * @param d
     * @param day
     * @return
     */
    public static Date getDateAfterDay(Date d, int day) {
        Calendar now = Calendar.getInstance();
        now.setTime(d);
        now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
        return now.getTime();
    }
    public static String getDateAfterDay(String d, int day) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = sdf.parse(d);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.add(Calendar.DATE, day);
        return sdf.format(calendar.getTime());
    }
    /**
     * 获得几个月后的时间
     * */
    public static String getDateAfterMonth(String d, int month) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = sdf.parse(d);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.add(Calendar.MONTH, month);
        return sdf.format(calendar.getTime());
    }
    /** 
      * 得到几天前的时间 
      * @param d 
      * @param day 
      * @return 
     * @throws ParseException 
      */  
      public static String getDateBefore(String d,int day) throws ParseException{  
        Date date = stringToDate(d);
        Calendar now =Calendar.getInstance();  
        now.setTime(date);  
        now.set(Calendar.DATE,now.get(Calendar.DATE)-day);  
        return dateToString(now.getTime());  
      } 
    /**
     * 返回几个小时后的时间
     * @param d
     * @param hour
     * @return
     * @throws ParseException 
     */
    public static String getDateAfterHour(String d,int hours) throws ParseException{
        /*Date date = stringToDate(d);
        Calendar now = Calendar.getInstance();
        now.setTime(date);
        now.set(Calendar.HOUR, now.get(Calendar.HOUR) + hour);
        return dateToString(now.getTime());*/
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = sdf.parse(d);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.add(Calendar.HOUR, hours);
        return sdf.format(calendar.getTime());
    }
    /**
     * 返回几分钟后的某个时间
     * @param d
     * @param minutes
     * @return
     * @throws ParseException 
     */
    public static String getDateAfterMinute(String d,int minutes) throws ParseException{
        /*Calendar now = Calendar.getInstance();
        now.setTime(d);
        now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minutes);
        return now.getTime();*/
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = sdf.parse(d);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.add(Calendar.MINUTE, minutes);
        return sdf.format(calendar.getTime());
    }
    /**
     * 比较两个日期的大小
     * true date1比date2前
     * false date1比date2后
     * @param date1
     * @param date2
     * @return
     */
    public static boolean dateCompare(Date date1,Date date2){
        boolean dateComPareFlag = true;
        if (date2.compareTo(date1) != 1) {
            dateComPareFlag = false; 
        }
        return dateComPareFlag;
    }
    public static boolean dateCompare(String date1,String date2) throws ParseException{
        boolean dateComPareFlag = true;
        if (stringToDateAll(date2).compareTo(stringToDateAll(date1)) != 1) {
            dateComPareFlag = false; 
        }
        return dateComPareFlag;
    }
    /*public static void main(String[] args) throws ParseException {
        System.out.println(dateCompare(stringToDate("2012-02-01"),stringToDate("2012-02-02")));
    }*/
    /**
     * 返回两时间之差
     * @param startTime
     * @param endTime
     * @return
     */
    public static long dateMinus(Date startTime,Date endTime){
        return endTime.getTime()-startTime.getTime();
    }
    
    //计算两个string类的时间差
    public static String time(String startTime, String endTime) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间   
        Date outdate = sdf.parse(endTime);    
        Date indate =  sdf.parse(startTime);    
        long totalhours = (outdate.getTime()-indate.getTime())/(1000*60*60);//时   
        long totalminutes = (outdate.getTime()-indate.getTime())/(1000*60)-totalhours*60;//分   
        long totalseconds = (outdate.getTime()-indate.getTime())/(1000)-totalminutes*60;//秒   
        String total_time = totalhours+"时"+totalminutes+"分"+totalseconds+"秒";  
        return total_time;
    }
    
    //计算两个时间之差,返回秒数
    public static long totalseconds(String startTime, String endTime) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间   
        Date outdate = sdf.parse(endTime);    
        Date indate =  sdf.parse(startTime); 
        long totalseconds = (outdate.getTime()-indate.getTime())/1000;        //秒
        return totalseconds;
    }
    /**
     * String类型日期转Date
     * @throws ParseException 
     * */
    public static Date stringToDate(String date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 格式化时间   
        Date toDate = sdf.parse(date);
        return toDate;
    }
    /**
     * Date类型日期转String类型
     * */
    public static String dateToString(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间   
        String toStrDate = sdf.format(date);
        return toStrDate;
    }      
    /**
     * String类型日期转Date
     * @throws ParseException 
     * */
    public static Date stringToDateAll(String date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间   
        Date toDate = sdf.parse(date);
        return toDate;
    }
    /**
     * Date类型日期转String类型
     * */
    public static String dateToStringAll(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 格式化时间   
        String toStrDate = sdf.format(date);
        return toStrDate;
    }         
        /**    
         * 取得两个时间段的时间间隔    
         *     
         * @author color    
         * @param t1    
         *            时间1    
         * @param t2    
         *            时间2    
         * @return t2 与t1的间隔天数    
         * @throws ParseException    
         *             如果输入的日期格式不是0000-00-00 格式抛出异常    
         */     
        public static int getBetweenDays(String t1, String t2)      
                throws ParseException {      
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd");      
            int betweenDays = 0;      
            Date d1 = format.parse(t1);      
            Date d2 = format.parse(t2);      
            Calendar c1 = Calendar.getInstance();      
            Calendar c2 = Calendar.getInstance();      
            c1.setTime(d1);      
            c2.setTime(d2);      
            // 保证第二个时间一定大于第一个时间      
            if (c1.after(c2)) {      
                c1 = c2;      
                c2.setTime(d1);      
            }      
            int betweenYears = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);      
            betweenDays = c2.get(Calendar.DAY_OF_YEAR)      
                    - c1.get(Calendar.DAY_OF_YEAR);      
            for (int i = 0; i < betweenYears; i++) {      
                c1.set(Calendar.YEAR, (c1.get(Calendar.YEAR) + 1));      
                betweenDays += c1.getMaximum(Calendar.DAY_OF_YEAR);      
            }      
            return betweenDays;      
        }  
        
        /**
         * 根据年月得到最后一天和第一天
         * 需要注意的是:月份是从0开始的,比如说如果输入5的话,实际上显示的是4月份的最后一天  
         * 这里好像有点问题
         * */
         public static String getLastDayOfMonth(int year, int month) {     
             Calendar cal = Calendar.getInstance();     
             cal.set(Calendar.YEAR, year);     
             cal.set(Calendar.MONTH, month);     
             cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DATE));  
            return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());  
         }   
         public static String getFirstDayOfMonth(int year, int month) {     
             Calendar cal = Calendar.getInstance();     
             cal.set(Calendar.YEAR, year);     
             cal.set(Calendar.MONTH, month);  
             cal.set(Calendar.DAY_OF_MONTH,cal.getMinimum(Calendar.DATE));  
             return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());  
         } 
         
         
         /**  
          * 获取某年第一天日期  
          * @param year 年份  
          * @return Date  
         * @throws ParseException 
          */  
         public static String getCurrYearFirst(int year) throws ParseException{   
             Calendar calendar = Calendar.getInstance();   
             calendar.clear();   
             calendar.set(Calendar.YEAR, year);   
             Date currYearFirst = calendar.getTime();
             return dateToString(currYearFirst);   
         }   
            
         /**  
          * 获取某年最后一天日期  
          * @param year 年份  
          * @return Date  
         * @throws ParseException 
          */  
         public static String getCurrYearLast(int year) throws ParseException{   
             Calendar calendar = Calendar.getInstance();   
             calendar.clear();   
             calendar.set(Calendar.YEAR, year);   
             calendar.roll(Calendar.DAY_OF_YEAR, -1);   
             Date currYearLast = calendar.getTime();   
             return dateToString(currYearLast);   
         }

         
         
         //获取季度
         public static String getThisSeasonTime(int month){     
             String quarter="";    
             if(month>=1&&month<=3){     
                 quarter="Spring";     
             }     
             if(month>=4&&month<=6){     
                 quarter="Summer";       
             }     
             if(month>=7&&month<=9){     
                 quarter = "Autumn";     
             }     
             if(month>=10&&month<=12){     
                 quarter = "Winter";     
             }
             return quarter;
         }
         
         //获取几月到几月
         public static String getMonthToMonth(int month){     
             String monthToMonth="";    
             String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
             int index=month/3;
             monthToMonth=months[index];
             return monthToMonth;
         }
         //根据月得到该季度的第一个月
         public static int getFirstMonthByQuarter(int month){     
             int quarter = 0;    
             if(month>=1&&month<=3){     
                 quarter = 1;     
             }     
             if(month>=4&&month<=6){     
                 quarter = 4;       
             }     
             if(month>=7&&month<=9){     
                 quarter = 7;     
             }     
             if(month>=10&&month<=12){     
                 quarter = 10;     
             }
             return quarter;
         }
         
         //取得当前时间
         public static Date getDateTime(String dateTime){
             Date strDate=java.sql.Date.valueOf(dateTime);
             return strDate;     
         }    
      
         @SuppressWarnings("static-access")
        public static int getMonth(String dateTime)
         {
            Calendar c=Calendar.getInstance();
            c.setTime(getDateTime(dateTime));
            int month=c.get(c.MONTH)+1;
            return month;
         }
         
         @SuppressWarnings("static-access")
        public static int getYear(String dateTime)
         {
            Calendar c=Calendar.getInstance();
            c.setTime(getDateTime(dateTime));
            int year=c.get(c.YEAR);
            return year;
         }

         
         
         // 用来全局控制 上一周,本周,下一周的周数变化
         private static int weeks = 0;
        
         // 获得当前日期与本周一相差的天数
         private static int getMondayPlus(String date) {
             Calendar cd = Calendar.getInstance();
             cd.setTime(getDateTime(date));
             // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
             int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
             if (dayOfWeek == 1) {
                 return -6;
             } else {
                 return 2 - dayOfWeek;
             }
         }

         // 获得上周星期一的日期
         public static String getPreviousMonday(String date) {
             weeks--;
             int mondayPlus = getMondayPlus(date);
             GregorianCalendar currentDate = new GregorianCalendar();
             currentDate.setTime(getDateTime(date));
             currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
             Date monday = currentDate.getTime();
             DateFormat df = DateFormat.getDateInstance();
             String preMonday = df.format(monday);
             return preMonday;
         }

         // 获得本周星期一的日期
         public static String getCurrentMonday(String date) {
             weeks = 0;
             int mondayPlus = getMondayPlus(date);
             GregorianCalendar currentDate = new GregorianCalendar();
             currentDate.setTime(getDateTime(date));
             currentDate.add(GregorianCalendar.DATE, mondayPlus);
             Date monday = currentDate.getTime();
             DateFormat df = DateFormat.getDateInstance();
             String preMonday = df.format(monday);
             return preMonday;
         }

         // 获得下周星期一的日期
         public static String getNextMonday(String date) {
             weeks++;
             int mondayPlus = getMondayPlus(date);
             GregorianCalendar currentDate = new GregorianCalendar();
             currentDate.setTime(getDateTime(date));
             currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
             Date monday = currentDate.getTime();
             DateFormat df = DateFormat.getDateInstance();
             String preMonday = df.format(monday);
             return preMonday;
         }

         // 获得相应周的周日的日期
         public static String getSunday(String date) {
             int mondayPlus = getMondayPlus(date);
             GregorianCalendar currentDate = new GregorianCalendar();
             currentDate.setTime(getDateTime(date));
             currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
             Date monday = currentDate.getTime();
             DateFormat df = DateFormat.getDateInstance();
             String preMonday = df.format(monday);
             return preMonday;
         } 
         
         //获得该日期所在周的所有日期
         public static List<String> getWeekAllDate(String date) {
             SimpleDateFormat dateformat = new SimpleDateFormat("MM-dd");   
             Calendar c = new GregorianCalendar();   
             c.setFirstDayOfWeek(Calendar.MONDAY);   
             c.setTime(getDateTime(date));   
             List<String> dateList = new ArrayList<String>();   
             for(int i=0;i<7;i++){               
                   c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()+i);   
                   dateList.add(dateformat.format(c.getTime()));      
             }
            return dateList;
         }
         //获得两个日期所在周的所有日期组合
         public static List<String> getTwoWeekAllDate(String date1, String date2) {
             System.out.println("ppp"+date1+date2);
             SimpleDateFormat dateformat = new SimpleDateFormat("MM-dd");   
             Calendar c1 = new GregorianCalendar();   
             c1.setFirstDayOfWeek(Calendar.MONDAY);   //中国传统每个星期是从星期一开始的,如需从星期天开始则为  Calendar.MONDAY-1
             c1.setTime(getDateTime(date1));
             Calendar c2 = new GregorianCalendar();   
             c2.setFirstDayOfWeek(Calendar.MONDAY);   
             c2.setTime(getDateTime(date2));
             List<String> dateList = new ArrayList<String>();   
             for(int i=0;i<7;i++){               
                   c1.set(Calendar.DAY_OF_WEEK, c1.getFirstDayOfWeek()+i);   
                   c2.set(Calendar.DAY_OF_WEEK, c2.getFirstDayOfWeek()+i); 
                   dateList.add(dateformat.format(c1.getTime())+"/"+dateformat.format(c2.getTime()));      
             }
            return dateList;
         }
         
         /*public static void main(String[] args) {
            System.out.println(getTwoWeekAllDate("2012-08-22","2012-08-30").get(0));
            //System.out.println(getPreviousMonday("2012-08-30"));
            //System.out.println(getLastDayOfMonth(2012, 1));
            List<Date> list = getAllTheDateOftheMonth(new Date());            
            for(Date date: list){
                SimpleDateFormat matter1=new SimpleDateFormat("MM-dd");     
                System.out.println(matter1.format(date));
                //System.out.println(date.toString());        
                }    
        }*/
         /**
          * 获得指定日期的月中的所有日期
          * */
        public static List<Date> getAllTheDateOftheMonth(Date date) {        
            List<Date> list = new ArrayList<Date>();        
            Calendar cal = Calendar.getInstance();        
            cal.setTime(date);        
            cal.set(Calendar.DATE, 1);        
            int month = cal.get(Calendar.MONTH);        
            while(cal.get(Calendar.MONTH) == month){            
                list.add(cal.getTime());            
                cal.add(Calendar.DATE, 1);        
                }        
            return list;    
        }
        /**
         * 根据日期计算所在周的周一和周日
         * @param time 指定的日期
         */
        public static String convertWeekByDate(Date time) {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式
            Calendar cal = Calendar.getInstance();
            cal.setTime(time);
            //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
            int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
            if(1 == dayWeek) {
                cal.add(Calendar.DAY_OF_MONTH, -1);
            }
            System.out.println("要计算日期为:"+sdf.format(cal.getTime())); //输出要计算日期
            cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
            int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
            cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 
            String imptimeBegin = sdf.format(cal.getTime());
            System.out.println("所在周星期一的日期:"+imptimeBegin);
            cal.add(Calendar.DATE, 6);
            String imptimeEnd = sdf.format(cal.getTime());
            System.out.println("所在周星期日的日期:"+imptimeEnd);
            return imptimeBegin+","+imptimeEnd;
        }

        
        /*public static void main(String[] args) {
              Calendar c_begin = new GregorianCalendar();
              Calendar c_end = new GregorianCalendar();
              DateFormatSymbols dfs = new DateFormatSymbols();
              String[] weeks = dfs.getWeekdays();

              c_begin.set(2011, 11, 31);                         // Calendar的月从0-11,所以4月是3.
              c_end.set(2012, 11, 31);                         // Calendar的月从0-11,所以5月是4.

              int count = 1;
              c_end.add(Calendar.DAY_OF_YEAR, 1);             // 结束日期下滚一天是为了包含最后一天

              while (c_begin.before(c_end)) {
               System.out.println("第" + count + "周  日期:"
                 + new java.sql.Date(c_begin.getTime().getTime()) + ", "
                 + weeks[c_begin.get(Calendar.DAY_OF_WEEK)]);

               if (c_begin.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                count++;
               }
               c_begin.add(Calendar.DAY_OF_YEAR, 1);
              }

             }*/
            
        /*public static void main(String[] args) throws ParseException {
            String startDate = FormatDate.dateToString(FormatDate.getDateAfterDay(FormatDate.stringToDate("2012-01-01"), 7));
            System.out.println(startDate);
            convertWeekByDate(new Date());
        }*/
        
        
        
        

            public static void main(String[] args) 
            {
                List<String> testStr = getDays(new Date(), 4, "yyyy-MM-dd");
                
                for(int i=0; i<testStr.size(); i++)
                {
                    System.out.println(testStr.get(i));
                }
                
            }
            
            public static List<String> getDays(Date day, int preDays, String format)
            {
                List<String> returnValue = new ArrayList<String>();
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                Calendar c = Calendar.getInstance();
                c.setTime(day);
                for(int i=0; i<preDays; i++)
                {
                    c.add(Calendar.DAY_OF_YEAR, -1);
                    /*while(c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY || c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)
                    {
                        c.add(Calendar.DAY_OF_YEAR, -1);
                    }*/
                    returnValue.add(new String(sdf.format(c.getTime())));
                }
                return returnValue;
            }

}

//Java Logger(java日志)

比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:

static Logger logger = Logger.getLogger(test.class);

//关于异常(自写抛出异常)

if(loginInfor == null){
            throw new NameNotFoundException();
        }else if(!new String(AESCoder.decrypt(Base64.decodeBase64(loginInfor.getPassword()), SecurityCenter.KEY)).equals(pwd)){
            throw new PasswordNotMatchException();
        }


package xidian.sl.netcredit.exception;

@SuppressWarnings("serial")
public class NameNotFoundException extends Exception{
    public NameNotFoundException(){}

    public NameNotFoundException(String msg)
    {
        super(msg);
    }
}

回去了解下 ,org.apache.log4j.Logger。写篇博客。

相关文章
|
1天前
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
34600 10
|
5天前
|
关系型数据库 Serverless 分布式数据库
高峰无忧,探索PolarDB PG版Serverless的弹性魅力
在数字经济时代,数据库成为企业命脉,面对爆炸式增长的数据,企业面临管理挑战。云原生和Serverless技术革新数据库领域,PolarDB PG Serverless作为阿里云的云原生数据库解决方案,融合Serverless与PostgreSQL,实现自动弹性扩展,按需计费,降低运维成本。它通过计算与存储分离技术,提供高可用性、灾备策略和简化运维。PolarDB PG Serverless智能应变业务峰值,实时监控与调整资源,确保性能稳定。通过免费体验,用户可观察其弹性性能和价格力,感受技术优势。
|
15天前
|
存储 缓存 监控
你的Redis真的变慢了吗?性能优化如何做
本文先讲述了Redis变慢的判别方法,后面讲述了如何提升性能。
102243 5
|
15天前
|
机器学习/深度学习 并行计算 算法
Transformer 一起动手编码学原理
学习Transformer,快来跟着作者动手写一个。
94254 8
|
14天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
19天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
124020 47
|
15天前
|
存储 弹性计算 Cloud Native
1 名工程师轻松管理 20 个工作流,创业企业用 Serverless 让数据处理流程提效
为应对挑战,语势科技采用云工作流CloudFlow和函数计算FC,实现数据处理流程的高效管理与弹性伸缩,提升整体研发效能。
64754 2
|
21天前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
187590 35
|
17天前
|
存储 关系型数据库 数据库
|
24天前
|
物联网 PyTorch 测试技术
手把手教你捏一个自己的Agent
Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用,用于方便地创建针对各种现实应用量身定制智能体,目前已经在生产级别落地。